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