2012-07-18 51 views
1

我正在使用使用EF5的CodeFirst方法。檢測如果DropCreateDatabaseIfModelChanges Ran?

我在尋找運行DropCreateDatabaseIfModelChanges修復數據庫,如果我的模型更改,但有數據需要重新填充,當它運行。

我想我可以做一個實體計數,看看它是否運行,但我很好奇,如果有一個更優雅的方式來做到這一點? (某種返回值或事件,我可以讓我的代碼尋找)

在此先感謝。

+1

您也可以通過遷移避免此問題:http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx - if你不知道,看看,它是整潔:) – Leo 2012-07-18 19:53:01

+0

Wo w謝謝你。只要仔細閱讀,就必須更多地消化它,但是一旦我退出開發過程,看起來就像是一個好方法。謝謝。 – RiddlerDev 2012-07-19 01:28:59

回答

1

你需要從DropCreateDatabaseIfModelChanges派生並重寫Seed方法將數據添加到播種的情況下,當數據庫被重建:

public class MyDbInitializer : DropCreateDatabaseIfModelChanges<MyDbContext> 
{ 

    protected override void Seed(MyDbContext context) 
    { 
     context.AddSomeInitialData(); 
     context.SaveChanges();   
    } 

} 

並在您的應用程序啓動設置爲數據庫初始化:

Database.SetInitializer(new MyDbInitializer()); 
+0

謝謝。看起來很明顯吧! – RiddlerDev 2012-07-18 13:47:39