2016-05-24 67 views
2

如何使用EF 6.x編寫DbMigration取決於SQL Server版本的代碼優先遷移?實體框架(EF)遷移取決於SQL Server版本

僞代碼來說明:

if (SqlEdition == "Enterprise") 
{ 
    Sql(@"..."); 
} 
else 
{ 
    Sql(@"..."); 
} 
+0

您可以使用此查詢的組合'SELECT SERVERPROPERTY(「版本」 )'並且像這樣運行以獲取遷移期間的版本:http://stackoverflow.com/a/30373394/84206 – AaronLS

+0

它引發'聯機索引操作只能在企業版SQL Server中執行。'錯誤,即使ONLINE = ON在不滿足條件的'if'中也是如此。 – alexey

+0

如果'if'中的代碼正在運行,它必須滿足條件,除非它在else中。我認爲你可以使用Console.Writeline或Debug.Writeline將消息輸出到Output窗口。檢查存儲查詢結果的SqlEdition變量的值,並將Writeline放在不同的位置以驗證代碼正在進入每個條件的位置。 – AaronLS

回答

0

使用這個答案的方式來運行遷移過程中的查詢:https://stackoverflow.com/a/30373394/84206

using (var dc = new DbContext("your connection string or name")) 
{ 
    string edition = dc.Database.SqlQuery<string>("SELECT SERVERPROPERTY('edition')").Single(); 

    if(edition == "Enterprise") 
    { 
     //... 
    } 
    else 
    { 
     //... 
    } 

}