Альтернативный / кандидатный ключ в модели данных ADO.NET - PullRequest
3 голосов
/ 15 марта 2011

Мне нужен объект, имеющий два отдельных ключа-кандидата, один из которых является первичным ключом, который является суррогатным ключом идентификации, а другой - альтернативным ключом, представляющим реальный уникальный атрибут. Мне нужно, чтобы они оба были отдельно в моей сущности. Обратите внимание, что я не имею в виду составные или многостолбцовые ключи. В любом случае мне нужно, чтобы это было на одном из моих объектов в модели данных ADO.NET. Возможно ли это сделать? Если да, пожалуйста, ведите меня.

Причина наличия второго ключа в том, что мне нужен другой объект для связи (и внешнего ключа) с первым объектом на этом ключе.

Обновление: я обнаружил ситуацию, очень похожую на мою, в следующем вопросе: http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/a248632a-d305-4c15-8e57-6742457cca94 Похоже, что EF v1 не поддерживает эту функцию. Кто-нибудь знает, если V4 (буквально вторая версия) имеет эту функцию или нет? Я обнаружил следующее, но, похоже, нет никаких признаков того, что эта функция была добавлена ​​в текущую версию: http://blogs.msdn.com/b/adonet/archive/2009/05/11/update-on-the-entity-framework-in-net-4-and-visual-studio-2010.aspx

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

Entity Framework не поддерживает уникальные ключи. В модели объекта ваш второй ключ будет полевым, как и любой другой. Вы не сможете создавать отношения для этого ключа, и EF не будет проверять, что значение ключа уникально. Но если ваша модель будет основана на существующей базе данных с уникальными ключами, у вас будет эта проверка на уровне базы данных.

Команда EF намекнула на поддержку уникальных ключей, но остается недоступной с .NET 4.5 .

0 голосов
/ 31 октября 2013

Если вы используете Code First и свободный API, создание двух отдельных DbContexts может быть хорошим решением для вас. Вы можете написать отдельные классы EntityTypeConfiguration для каждого из ключей, которые вы хотите использовать в свойствах навигации. Мы столкнулись с этой проблемой в нашем проекте, и я написал сообщение в блоге, описывающее наше решение: http://mmilleruva.blogspot.com/2013/10/working-with-legacy-database-schemas.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...