EF Codefirst подтвердить уникальную собственность? - PullRequest
9 голосов
/ 06 февраля 2011

Любопытно, как эффективно проверить, является ли данное свойство модели CodeFirst уникальным. Классический пример - имя пользователя или отображаемое имя.

Традиционно я мог бы сделать это, установив ограничение уникальности в базе данных, или в качестве альтернативы, выполнив поиск во время попытки вставки. Я знаю, как вручную добавить эти вещи в саму БД после генерации, просто хочу посмотреть, есть ли способ сделать это как часть схемы, предоставляемой платформой.

UPDATE Я обнаружил, что могу переопределить метод ValidateEntity в DbContext, который концептуально позволил бы мне выполнить поиск, а затем сделать объект недействительным, чтобы предотвратить сохранение. Мне все еще было бы интересно узнать, есть ли способ применить ограничение Unique или подобное в базе данных

Ответы [ 2 ]

6 голосов
/ 07 февраля 2011

Code First (и EF в целом) все же изначально не поддерживает уникальные ограничения.В этом посте я показал один способ их создания в то время, когда ваша база данных создается Code First (с помощью метода SQLCommand в пользовательском классе Initializer), но на самом деле он не отличаетсяот ручного создания его самостоятельно.Другой способ - ValidateEntity, который вы предложили, но я все равно создал бы уникальные ограничения для базы данных.

0 голосов
/ 20 октября 2016

Я написал об этом на код проекта

Как правило, это зависит от атрибутов, которые вы наделили на классы для генерации уникальных индексов

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