Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта страница содержит сведения о настройке связей в модели с помощью конструктора EF. Общие сведения о отношениях в EF и о том, как получить доступ к данным и управлять ими с помощью связей, см. в разделе "Связи" и "Свойства навигации".
Связи определяют связи между типами сущностей в модели. В этом разделе показано, как сопоставить связи с конструктором Entity Framework (EF Designer). На следующем рисунке показаны основные окна, которые используются при работе с конструктором EF.
Замечание
При создании концептуальной модели в списке ошибок могут появиться предупреждения о неотображённых сущностях и связях. Эти предупреждения можно игнорировать, так как после выбора создания базы данных из модели ошибки будут удалены.
Обзор ассоциаций
При проектировании модели с помощью конструктора EF файл .edmx представляет модель. В edmx-файле элемент Association определяет связь между двумя типами сущностей. Ассоциация должна указывать типы сущностей, участвующих во взаимоотношении, и возможное количество типов сущностей на каждом конце взаимоотношения, что называется кратностью. Кратность конца связи может иметь значение один (1), ноль или один (0..1), или многие (*). Эта информация указана в двух дочерних элементах end .
Во время выполнения экземпляры типов сущностей на одном конце ассоциации можно получить через навигационные свойства или внешние ключи (если вы выберете использование внешних ключей в сущностях). При использовании внешних ключей связь между сущностями управляется элементом ReferentialConstraint (дочерним элементом элемента Association ). Рекомендуется всегда отображать внешние ключи для отношений в ваших сущностях.
Замечание
В "многие ко многим" (*:*) нельзя добавлять внешние ключи к сущностям. В отношениях типа *:* информация об ассоциации управляется независимым объектом.
Сведения о элементах CSDL (ReferentialConstraint, Association и т. д.) см. в спецификации CSDL.
Создание и удаление ассоциаций
Создание ассоциации с EF Designer обновляет содержимое модели файла .edmx. После создания ассоциации необходимо создать сопоставления для ассоциации (описано далее в этом разделе).
Замечание
В этом разделе предполагается, что вы уже добавили в модель сущности, которые вы хотите связать.
Создание ассоциации
Щелкните правой кнопкой мыши пустое место на поверхности конструктора, наведите указатель на Добавить новое и выберите Связь....
Заполните параметры связи в диалоговом окне "Добавление ассоциации ".
Замечание
Вы можете не добавлять свойства навигации или свойства внешнего ключа в сущности на концах ассоциации, сняв отметки в чекбоксах **Свойство навигации** и **Добавить свойства внешнего ключа в <имя типа сущности>**. Если добавить только одно свойство навигации, связь будет проходить только в одном направлении. Если вы не добавляете свойства навигации, необходимо добавить свойства внешнего ключа, чтобы получить доступ к сущностям в конечных точках ассоциации.
Нажмите кнопку ОК.
Удалить связь
Чтобы удалить связь, выполните одно из следующих действий:
Щелкните правой кнопкой мыши связь на поверхности EF Designer и выберите Удалить.
ИЛИ-
Выберите одну или несколько связей и нажмите клавишу DELETE.
Включите в ваши сущности свойства внешнего ключа (ссылочные ограничения)
Рекомендуется всегда предоставлять внешние ключи для связей в сущностях. Entity Framework использует ограничение ссылки для определения того, что свойство выступает в качестве внешнего ключа для связи.
Если при создании связи вы установили флажок "Добавить свойства внешнего ключа" для типа сущности <>, это ссылочное ограничение было добавлено для вас.
При использовании EF Designer для добавления или изменения ссылочного ограничения конструктор EF добавляет или изменяет элемент ReferentialConstraint в содержимом CSDL файла edmx.
Дважды щелкните ассоциацию, которую требуется изменить. Откроется диалоговое окно "Ограничение ссылки ".
В раскрывающемся списке основная выберите основную сущность в референциальном ограничении. Ключевые свойства сущности добавляются в список основных ключей в диалоговом окне.
В раскрывающемся списке Зависимая выберите зависимую сущность в ссылочном ограничении.
Для каждого главного ключа, имеющего зависимый ключ, выберите соответствующий зависимый ключ из раскрывающихся списков в столбце зависимого ключа.
Нажмите кнопку ОК.
Создание и изменение сопоставлений ассоциаций
Можно указать, как сопоставление сопоставляется с базой данных в окне сведений о сопоставлении конструктора EF.
Замечание
Вы можете сопоставить детали только для связей, которые не имеют заданного ссылочного ограничения. Если задано ограничение ссылочного ключа, то свойство внешнего ключа включается в сущность, и можно использовать детали сопоставления сущности, чтобы управлять тем, к какому столбцу привязан внешний ключ.
Создание ассоциативного сопоставления
Щелкните правой кнопкой мыши связь в области конструктора и выберите "Сопоставление таблиц". Отображается сопоставление данных в окне Сведений о сопоставлении.
Нажмите кнопку "Добавить таблицу или представление". Появится раскрывающийся список, содержащий все таблицы в модели хранения.
Выберите таблицу, с которой будет сопоставлена связь. В окне Детали сопоставления отображаются оба конца ассоциации и ключевые свойства для типа сущности в каждом из концов.
Для каждого свойства ключа щелкните поле "Столбец " и выберите столбец, с которым будет сопоставлено свойство.
Изменение ассоциативного отображения
- Щелкните правой кнопкой мыши связь в области конструктора и выберите "Сопоставление таблиц". Отображает сопоставление ассоциаций в окне Сведения о сопоставлении.
- Щелкните "Карты с <именем> таблицы". Появится раскрывающийся список, содержащий все таблицы в модели хранения.
- Выберите таблицу, с которой будет сопоставлена связь. В окне Сведения о сопоставлении отображаются оба конца связи и ключевые свойства типа сущности для каждого из них.
- Для каждого свойства ключа щелкните поле "Столбец " и выберите столбец, с которым будет сопоставлено свойство.
Изменение и удаление свойств навигации
Свойства навигации — это упрощённые свойства, которые используются для определения местоположения сущностей на концах ассоциации в модели. Свойства навигации можно создавать при создании связи между двумя типами сущностей.
Изменение свойств навигации
- Выберите свойство навигации в области EF Designer. Сведения о свойстве навигации отображаются в окне свойств Visual Studio.
- Измените параметры свойства в окне "Свойства ".
Удаление свойств навигации
- Если внешние ключи не предоставляются для типов сущностей в концептуальной модели, при удалении свойства навигации это может сделать соответствующую ассоциацию доступной только в одном направлении или невозможной для пересечения.
- Щелкните правой кнопкой мыши свойство навигации в области EF Designer и выберите пункт "Удалить".