2013-06-20 14 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

以我的經驗,這幾乎總是與不正確的遷移ID(號碼)的遷移有關。只有數量大於上次運行遷移的遷移纔會執行。例如,如果我以前執行了帶有id(number)3的遷移,然後編寫了帶有id 2的新遷移,當我嘗試執行新遷移時,它將被跳過,因爲只有使用id和id更大的遷移比3被考慮。

如果版本列中的最大數字大於1306122或1306123,則可以通過查看數據庫中的VersionInfo表來檢查此問題,然後發現問題。

+0

嗯。我已經比較了版本值,新類肯定比較大。有沒有辦法強制一個版本運行,(希望弄清楚爲什麼我的新類沒有運行)。例如,我試過在一個我認爲已經運行的類上進行遷移:但它不起作用。 – John

2

您的遷移需要成爲公共班級。

+0

看起來像是對我的正確答案。斑點傑瑞。 –

相關問題