Почему Entity Framework делает определенные поля EnityKeys, когда они не являются даже PK в исходной БД? - PullRequest
1 голос
/ 22 января 2011

Начиная с проекта Entity Framework.

Импортировал базу данных, которую я собираюсь использовать, и сразу заметил, что многие поля таблицы были преобразованы в типы EntityKey, а исходные поля даже не являются ключами.Кажется, не является шаблоном того, какие поля были сделаны EntityKeys, а какие нет.

Это нормально?Там не было никаких вариантов для этого в мастере.Я не хочу проверять и удалять это свойство для всех полей, в которые оно было добавлено.

Спасибо за ваш совет!

Ответы [ 2 ]

1 голос
/ 22 января 2011

Каждой сущности в вашей модели требуется уникальный ключ, поэтому 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);
0 голосов
/ 22 января 2011

http://msdn.microsoft.com/en-us/library/dd283139.aspx

Думаю, как только вы прочтете первый абзац, вы поймете роль ключей сущностей в Entity Framework.

...