Каждой сущности в вашей модели требуется уникальный ключ, поэтому EF может отслеживать и извлекать / сохранять эти сущности на основе их уникального идентификатора.
Если ваши таблицы в вашей базе данных не имеют первичных ключей, то вашбаза данных не реляционная и поэтому не должна использоваться ORM, такой как EF, который преимущественно предназначен для СУБД.
Если бы у вас была такая сущность:* восстановить один заказ?Как бы вы сохранили один заказ?
Важнейшие методы LINQ, такие как SingleOrDefault()
, были бы бесполезны, так как нет гарантии, что это не вызовет исключения:
var singleOrder = ctx.Orders.SingleOrDefault(x => x.Name == "Foo");
Если у вас есть EntityKey и PK с именем "OrderId", это гарантированно не вызовет исключение:
var singleOrder = ctx.Orders.SingleOrDefault(x => x.OrderId == 1);