Внедрение отношения "один к нулю" или "один" в SQL Server
Я использую первый подход к базе данных Entity Framework 4.1. Я использовал устаревшую базу данных. В моем файле edmx, который создал классы сущностей на основе таблиц в старой базе данных, между некоторыми объектами существует связь один к нулю или один.
Хотя я изучил таблицы базы данных и отношения между ними, я не узнал, как отношение одно к нулю или было реализовано в базе данных.
Для получения дополнительной информации я поставил несколько скриншотов моей диаграммы базы данных и свойства ее отношения и соответствующих сущностей в файле edmx:
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Отношение 1-0..1 в вашей базе данных отображается непосредственно. Он построен между таблицами курсов и онлайн-курсов, где курс является основным в отношении (1), а OnlineCourse зависит от FK, настроенного на CourseID. FK также является PK OnlineCourse = он должен быть уникальным, и из-за этого он равен 0..1.
База данных "всегда" использует 1 - 0..1, потому что реальный 1 - 1 не может быть эффективно использован для вставки данных. 1 - 1 означает, что левый должен быть вставлен после правого, но правый должен быть вставлен после левого = невозможно. Из-за этого используется 1 - 0..1, где left является основным и должен быть вставлен до того, как правое и правое будут зависеть и должны быть вставлены после левого.
Ответ 2
Если таблицы базы данных уже сконструированы с соотношением 1:1 (или 1: 0-1), тогда EF будет работать с ним просто отлично, хотя он будет плюрализовать имя дочерней таблицы (если вы позволите ей плюрализовать),
Основной подход - создать внешний ключ (как если бы вы делали отношения 1: многие), а затем поместить уникальный индекс в поле внешнего ключа. Это то, к чему вы стремитесь?
Это также может помочь: Разработка отношений 1:1 и 1: m в SQL Server.
С одной стороны, отношения 1-1 часто не нужны и/или симптом дизайна базы данных, который нуждается в переосмыслении. Однако, похоже, что вы унаследовали дизайн... Я знаю все об этом!