Реализация отношения «один к нулю или один» в SQL Server - PullRequest
13 голосов
/ 04 октября 2011

Сначала я использую базу данных Entity Framework 4.1. Я использовал устаревшую базу данных. В моем файле edmx, который создавал классы сущностей на основе таблиц в унаследованной базе данных, существует связь один к нулю или один между некоторыми сущностями.

Хотя я исследовал таблицы базы данных и связи между ними, я не обнаружил, как в базе данных реализовано отношение один к нулю или одному .

Для получения дополнительной информации я поместил несколько снимков экрана со своей диаграммой базы данных и свойством ее отношения и соответствующими объектами в файл edmx:

enter image description here enter image description here

Ответы [ 2 ]

30 голосов
/ 04 октября 2011

Отношение 1-0..1 в вашей базе данных видимо напрямую.Он построен между таблицами Course и OnlineCourse, где Course является основным в отношении (1), а OnlineCourse зависит от FK, настроенного на CourseID.FK также является PK OnlineCourse = он должен быть уникальным и поэтому равен 0..1.

База данных «всегда» использует 1 - 0..1, потому что действительные 1 - 1 не могут быть эффективно использованы для вставки данных.1 - 1 означает, что левый должен быть вставлен после правого, но правый должен быть вставлен после левого = невозможно.Из-за этого 1 - 0..1 используется, когда left является главным и должно быть вставлено до того, как right и right зависимо и должно быть вставлено после left.

0 голосов
/ 04 октября 2011

Если таблицы базы данных уже спроектированы с отношением 1: 1 (или 1: 0-1), то EF будет работать с ним очень хорошо, хотя и будет умножать имя дочерней таблицы (если вы позволите ей множественное число) ,

Основной подход состоит в том, чтобы создать внешний ключ (как если бы вы делали отношение 1: много), а затем поместить уникальный индекс в поле внешнего ключа. Это то, к чему вы стремитесь?

Это также может помочь: Разработка отношений 1: 1 и 1: m в SQL Server .

В дополнение к этому, отношения 1-1 часто не нужны и / или являются признаком дизайна базы данных, который требует переосмысления. Тем не менее, похоже, что вы унаследовали дизайн ... Я знаю все об этом!

...