Entity Framework 4.1 Чтобы узнать, какое ограничение внешнего ключа нарушено во время удаления - PullRequest
0 голосов
/ 19 января 2012

Сначала я начал использовать Entity Framework 4.1 с кодом.Я действительно люблю это по сравнению с предыдущими методами ado.net.

У меня очень простая ситуация, когда в базе данных есть таблица отдела и таблица сотрудника.Каждый сотрудник принадлежит отделу, а в отделе много сотрудников.Бизнес-правило: при удалении отдела, если есть какие-либо связанные сотрудники, оно не должно разрешать удаление.Я могу написать небольшой метод перед удалением и проверить зависимость.Однако, поскольку у меня очень сложный проект с таблицами более 300 дБ, я ненавижу это делать.Отношения часто меняются, что приводит к большому количеству изменений во всех методах удаления проекта.

В ado.net, в подобных ситуациях, я использовал для анализа выданного исключения и получения имени конкретного Foreignключевое ограничение, которое было нарушено.Основываясь на названии нарушенного ограничения FK, я использовал для сообщения клиенту соответствующее сообщение об ошибке.Эта техника хорошо работала даже в довольно большом проекте с более чем 150 таблицами.

Как мне сделать подобное в EF?Как узнать, какой FK нарушен при вызове SaveChanges ()?

1 Ответ

0 голосов
/ 19 января 2012

Вам нужно получить Message самого внутреннего исключения (обычно это SqlException). Затем вы можете извлечь имя FK из этой строки и проверить, какой FK нарушен.

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