Связи — конструктор EF

Примечание.

Эта страница содержит сведения о настройке связей в модели с помощью конструктора EF. Общие сведения о отношениях в EF и о том, как получить доступ к данным и управлять ими с помощью связей, см. в разделе "Связи" и "Свойства навигации".

Связи определяют связи между типами сущностей в модели. В этом разделе показано, как сопоставить связи с конструктором Entity Framework (EF Designer). На следующем рисунке показаны основные окна, которые используются при работе с конструктором EF.

EF Designer

Примечание.

При создании концептуальной модели в списке ошибок могут появиться предупреждения об несопоставленных сущностях и сопоставлениях. Эти предупреждения можно игнорировать, так как после выбора создания базы данных из модели ошибки будут удалены.

Обзор ассоциаций

При проектировании модели с помощью конструктора EF файл .edmx представляет модель. В edmx-файле элемент Association определяет связь между двумя типами сущностей. Ассоциация должна указывать типы сущностей, которые участвуют в связи, и возможное количество типов сущностей на каждом конце связи, которое называется кратностью. Кратность конца связи может иметь значение одного (1), ноль или один (0.1) или многие (*). Эта информация указана в двух дочерних элементах end .

Во время выполнения экземпляры типов сущностей в одной части ассоциации можно получить через свойства навигации или внешние ключи (если вы решили предоставить внешние ключи в сущностях). При использовании внешних ключей связь между сущностями управляется элементом ReferentialConstraint (дочерним элементом элемента Association ). Рекомендуется всегда предоставлять внешние ключи для связей в сущностях.

Примечание.

В "многие ко многим" (*:*) нельзя добавлять внешние ключи к сущностям. В связи *:* сведения об ассоциации управляются независимым объектом.

Сведения о элементах CSDL (ReferentialConstraint, Association и т. д.) см. в спецификации CSDL.

Создание и удаление ассоциаций

Создание связи с EF Designer обновляет содержимое модели edmx-файла. После создания ассоциации необходимо создать сопоставления для ассоциации (описано далее в этом разделе).

Примечание.

В этом разделе предполагается, что вы уже добавили сущности, которые вы хотите создать связь между моделью.

Создание ассоциации

  1. Щелкните правой кнопкой мыши пустую область области конструктора, наведите указатель на добавление нового и выберите "Связь...".

  2. Заполните параметры связи в диалоговом окне "Добавление ассоциации ".

    Add Association

    Примечание.

    Вы можете не добавлять свойства навигации или свойства внешнего ключа в сущности в конце связи, очищая свойства **Навигации **и **Добавить свойства внешнего ключа в <сущность типа> сущности ***проверка boxes. При добавлении одного свойства навигации ассоциацию можно будет перемещать только в одном направлении. При добавлении свойств навигации необходимо добавить свойства внешнего ключа, чтобы обеспечить доступ к сущностям в элементах ассоциации.

  3. Щелкните OK.

Удаление ассоциации

Чтобы удалить связь, выполните одно из следующих действий:

  • Щелкните правой кнопкой мыши связь в области EF Designer и выберите "Удалить".

  • OR -

  • Выберите одну или несколько ассоциаций и нажмите клавишу DELETE.

Включение свойств внешнего ключа в сущности (ссылочных ограничений)

Рекомендуется всегда предоставлять внешние ключи для связей в сущностях. Entity Framework использует ограничение ссылки для определения того, что свойство выступает в качестве внешнего ключа для связи.

Если вы проверка свойства внешнего ключа в <поле "Сущность типа> сущности" проверка box при создании связи, это ограничение ссылки было добавлено для вас.

При использовании EF Designer для добавления или изменения ссылочного ограничения конструктор EF добавляет или изменяет элемент ReferentialConstraint в содержимом CSDL файла edmx.

  • Дважды щелкните ассоциацию, которую необходимо изменить. Откроется диалоговое окно "Ограничение ссылки".

  • В раскрывающемся списке "Субъект" выберите основную сущность в ограничении ссылки. Ключевые свойства сущности добавляются в список ключей субъекта в диалоговом окне.

  • В раскрывающемся списке Зависимых выберите зависимые сущности в ограничении ссылки.

  • Для каждого ключа субъекта, имеющего зависимый ключ, выберите соответствующий зависимый ключ из раскрывающихся списков в столбце зависимых ключей .

    Ref Constraint

  • Щелкните OK.

создавать и изменять сопоставления ассоциаций

Можно указать, как сопоставление сопоставляется с базой данных в окне сведений о сопоставлении конструктора EF.

Примечание.

Вы можете сопоставить только сведения о сопоставлениях, которые не имеют указанного ограничения ссылки. Если задано ограничение ссылочного ключа, то свойство внешнего ключа включается в сущность и можно использовать сведения о сопоставлении сущности для управления столбцом, с которым сопоставляется внешний ключ.

Создание сопоставления сопоставлений

  • Щелкните правой кнопкой мыши связь в области конструктора и выберите "Сопоставление таблиц". Откроется сопоставление сопоставлений в окне сведений о сопоставлении.

  • Нажмите кнопку "Добавить таблицу или представление". Появится раскрывающийся список, содержащий все таблицы в модели хранения.

  • Выберите таблицу, с которой будет сопоставлена ассоциация. В окне сведений о сопоставлении отображаются оба конца связи и ключевые свойства для типа сущности в каждом конце.

  • Для каждого свойства ключа щелкните поле "Столбец " и выберите столбец, с которым будет сопоставлено свойство.

    Mapping Details 4

Изменение сопоставления сопоставлений

  • Щелкните правой кнопкой мыши связь в области конструктора и выберите "Сопоставление таблиц". Откроется сопоставление сопоставлений в окне сведений о сопоставлении.
  • Щелкните Карты имя <>таблицы. Появится раскрывающийся список, содержащий все таблицы в модели хранения.
  • Выберите таблицу, с которой будет сопоставлена ассоциация. В окне сведений о сопоставлении отображаются оба конца связи и ключевые свойства для типа сущности в каждом конце.
  • Для каждого свойства ключа щелкните поле "Столбец " и выберите столбец, с которым будет сопоставлено свойство.

Изменение и удаление свойств навигации

Свойства навигации — это сочетания свойств, которые используются для поиска сущностей в концах ассоциации в модели. Свойства навигации могут быть созданы при создании ассоциации между двумя типами сущностей.

Изменение свойств навигации

  • Выберите свойство навигации в области EF Designer. Сведения о свойстве навигации отображаются в окне свойств Visual Studio.
  • Измените параметры свойства в окне "Свойства ".

Удаление свойств навигации

  • Если внешние ключи не представлены в типах сущностей в концептуальной модели, то удаление свойства навигации может обеспечить перемещение соответствующей ассоциации только в одном направлении или сделать ее неперемещаемой.
  • Щелкните правой кнопкой мыши свойство навигации в области EF Designer и выберите пункт "Удалить".