Определение модели данных, которая обеспечивает соотношение 1: 1 только с помощью ограничений, невозможно, так как для этого требуется циклическая ссылка, что будет означать, что вы никогда не сможете вставить одну сторону отношения до тех пор, пока не будет создана другая сторона.
Хотя обойти это можно с помощью хитрости (удаление ограничений, использование специфичных для СУБД команд, таких как отложенные ограничения Oracle), это невозможно сделать в традиционном смысле.Самое близкое, что вы можете получить, это 1:0..1
.
. Ниже приведены модели, представляющие различные комбинации Worker:Vehicle
:
0..1:1
Worker (ID, VehicleID unique constraint)
Vehicle (ID)
1:0..1
Worker (ID)
Vehicle (ID, WorkerID unique constraint)
0..1:0..1
Worker (ID)
Vehicle (ID)
WorkerVehicle (WorkerID, VehicleID) <-- primary key on one column,
unique constraint on the other
К сожалению, поскольку EF не поддерживает уникальные ограничения (или, скорее, он не распознает или не применяет их), вы всегда заканчиваетес коллекцией на другой стороне отношений, а не одной сущностью.