Отношения — дизайнер EF

Замечание

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

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

Конструктор EF

Замечание

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

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

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

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

Замечание

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

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

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

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

Замечание

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

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

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

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

    Добавление ассоциации

    Замечание

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

  3. Нажмите кнопку ОК.

Удалить связь

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

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

  • ИЛИ-

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

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

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

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

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

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

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

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

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

    Ограничение ссылок

  • Нажмите кнопку ОК.

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

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

Замечание

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

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

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

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

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

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

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

Изменение ассоциативного отображения

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

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

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

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

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

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

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