Вы можете определить отношения с помощью текучего API.
modelBuilder.Entity<Pet>
.hasOptional(p => p.Owner)
.willCascadeOnDelete(false);
Это будет настраивать свойство relational как необязательное и будет гарантировать, что удаление каскада не вступит в силу. Вы можете создать Pet
без Owner
, и удаление Owner
не удалит связанные Pets
.
Однако вы не можете назначить Pet.OwnerId
к OwnerId
, который не существует в Owner
таблице. Если вам действительно необходимо каким-то образом отслеживать недопустимые значения OwnerId
, вам нужно либо иметь отдельное свойство, которое вы вручную обновляете, либо произвольное значение, либо вам нужно будет определить эти объекты без использования свойства навигации и выполнить поиск вручную ,
Это была бы исключительная ситуация, когда вам нужно было бы указать произвольное значение для OwnerId
, которое не соответствует таблице Owner
; В 99% всех случаев необязательное отношение, которое принимает действительные OwnerId
или null
, - все, что необходимо.
Свойство OwnerId
на самом деле не требуется на объекте Pet
, но если оно присутствует, оно должно быть установлено равным int?
.
http://stackoverflow.com/questions/5691780/navigation-property-without-declaring-foreign-key – jdphenix