2012-04-23 24 views
0

我正在使用實體框架(4.3)遷移。我有一個配置類爲正常定義種子的方法,這是應該的遷移後打電話添加數據:EF遷移 - 種子僅在連接到調試器時執行

internal sealed class SettingsConfig : DbMigrationsConfiguration<My.Assembly> 
{ 
    public SettingsConfig() 
    { 
     AutomaticMigrationsEnabled = false; 
    } 

    protected override void Seed(ScannerAreaManager.DataAccess.CableSenseLocal context) 
    { 
     // This method will be called after migrating to the latest version. 
    } 
} 

我運行SQL Server Profiler來看看發生了什麼到數據庫。

現在,如果我刪除數據庫,並使用F5(連接到調試器)從Visual Studio運行此應用程序,它將運行,並且我可以看到數據庫已創建,遷移運行以及調用種子方法並添加數據到數據庫

如果我然後刪除我的數據庫,並再次用Ctrl-F5(不附加到調試器)運行應用程序,然後我看到我的數據庫被創建,遷移運行,但種子方法從不被調用。

當然,這不是由設計?有任何想法嗎?

回答

1

我的不好,這是由於我們的代碼在初始化之前試圖從上下文中讀取 - 但只有當它不在調試模式下運行時纔會產生。

EF確實表現得如預期的那樣 - 在遷移執行後調用種子方法。