Ответ 1
Из моего опыта, свидетельствующего о том, что таблица миграции не синхронизирована (даже если ваши данные отсутствуют), и которая теперь является частью схемы db (начиная с 4.3, я думаю, - в системных таблицах).
Могут быть много причин и способов испытать эту ошибку, но большую часть времени...
Проблематичной частью является некоторая комбинация ручной поддержки/восстановления полной базы данных с изменениями кода рядом - я не совсем уверен, почему всегда.
Короче говоря, даже если Db-s - одна и та же таблица миграции, данные не могут быть - и сравнение хэшей может потерпеть неудачу (все же полное восстановление звучит как достаточно хорошее, но у вас есть "две стороны" ).
Что для меня работает, так это использовать
Update-Database -Script
Это создает script с "разницей миграции",
которую вы можете вручную применить в качестве SQL script в базе данных целевого сервера (и вы должны получить правильные строки таблицы миграции, вставленные и т.д.).
Если это все еще не работает, вы все равно можете сделать две вещи...
-
Удалите таблицу миграции (target - под системными таблицами) - в соответствии с http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx там есть - это должно быть неудачно вернемся к предыдущему поведению, и если вы уверены, что ваши Db-ы те же самые - он просто собирается "доверять вам",
-
В качестве последнего средства, которое я использовал, сделайте
Update-Database -Script
полной схемы (например, инициализируя пустой db, который должен принудительно "full script" ),
найти записиINSERT INTO [__MigrationHistory]
,
просто запустите их, вставьте их в базу данных,
и убедитесь, что ваши базы данных - и код соответствуют,
что должно заставить вещи работать синхронно снова.
(отказ от ответственности: это не доказательство пули, чтобы работать в любое время, вам может потребоваться попробовать несколько вещей, учитывая ваши локальные сценарии, но вы должны синхронизировать их)