2013-06-20 3 views
1

фона: VS 2012Как определить, почему новый класс не работает

Мы отщепляются таблицы миграции в отдельные классы, так что мы имеем

класс 1,

[Migration(1306122)] 
class M1306122CreateTableX: Migration 
{...} 

класс 2,

[Migration(1306123)] 
class M1306123CreateTableY: Migration 
{...} 

и т.д. Дважды я создал новый класс, приращением migrat ионный номер, с (как представляется, полностью действующим кодом) процесс миграции просто не запускает новый класс. Нет никакой ошибки или чего-то еще. Он просто не работает.

Сейчас мы используем пакетный файл для запуска миграции.

migrate.exe^
/connection "Server=(local)\SQLEXPRESS; Database=%2_Aggregated; Integrated Security=True"^
/db SqlServer2012^
/target %1^
/namespace DatabaseMigrations.Aggregated^
/nested 

Есть ли способ отладки, чтобы узнать, почему новый класс не включен?

ответ

0

По моему опыту, это почти всегда связано с миграцией с неправильным идентификатором миграции (числом). Будут выполнены только миграции, у которых больше, чем последняя миграция.

Например, если я выполнил миграцию с идентификатором (номером) 3 ранее, а затем написал новую миграцию с идентификатором 2, когда я попытаюсь выполнить мою новую миграцию, она будет пропущена, поскольку только миграции и идентификатор больше чем 3.

Вы можете проверить это, просмотрев таблицу VersionInfo в вашей базе данных, если наибольшее число в столбце Версии больше 1306122 или 1306123, то вы нашли проблему.

+0

Хммм. Я сравнил значения версии, и новые классы определенно больше. Есть ли способ заставить версию работать (в надежде выяснить, почему мои новые классы не работают). Например, я попытался выполнить миграцию: вниз в классе, который, как я знаю, был запущен, но он не работает. – John

2

Ваши миграции должны быть общедоступными.

+0

Похож на правильный ответ мне. Хорошо заметил Джерри. –

Смежные вопросы