Почему происходит миграция данных, но при нарушении ограничения внешнего ключа база данных не обновляется?

Как внести изменения в базу данных, используя Entity Framework версии 7.0.3, при наличии двух классов, связанных с таблицами OrganizationControl?
  • 16 февраля 2024 г. 12:58
Ответы на вопрос 2

                            
<a href="https://qna.habr.com/user/CityzenUNDEAD" rel="nofollow">CityzenUNDEAD</a> , сообщение об ошибке означает, что у вас таки действительно кривые данные, а именно - есть минимум одна запись в RiskLevels со значением поля OrganizationControlId = 0, для которой в таблице OrganizationControl нет записи с таким же значением первичного ключа (как я понял - поля Id). <br/> Вывести все такие записи из RiskLevels, которые ссылаются на отутствующие записи в OrganizationControl,  можно SQL-запросом <br/> <pre><code class="sql">SELECT * FROM RiskLevels WHERE OrganizationControlId!=ALL(SELECT Id FROM OrganizationControl)</code></pre> <br/> И пока такие записи есть, наложить ограничение внешнего ключа не поле RiskLevels.OrganizationControlId у вас не получится. Ищите и разбирайтесь, что с этими записями делать. <br/> <br/> PS Entity Framework - он шибко умный, он сам находит связанные друг с другом поля, сам добавляет поля для чего-нибудь типа первичного ключа и т.д. Так что не удивляйтесь, что EF умничает, а если не хотите этого - жестко его контролируйте.
Похожие вопросы