我正在使用使用EF5的CodeFirst方法。檢測如果DropCreateDatabaseIfModelChanges Ran?
我在尋找運行DropCreateDatabaseIfModelChanges修復數據庫,如果我的模型更改,但有數據需要重新填充,當它運行。
我想我可以做一個實體計數,看看它是否運行,但我很好奇,如果有一個更優雅的方式來做到這一點? (某種返回值或事件,我可以讓我的代碼尋找)
在此先感謝。
我正在使用使用EF5的CodeFirst方法。檢測如果DropCreateDatabaseIfModelChanges Ran?
我在尋找運行DropCreateDatabaseIfModelChanges修復數據庫,如果我的模型更改,但有數據需要重新填充,當它運行。
我想我可以做一個實體計數,看看它是否運行,但我很好奇,如果有一個更優雅的方式來做到這一點? (某種返回值或事件,我可以讓我的代碼尋找)
在此先感謝。
你需要從DropCreateDatabaseIfModelChanges
派生並重寫Seed方法將數據添加到播種的情況下,當數據庫被重建:
public class MyDbInitializer : DropCreateDatabaseIfModelChanges<MyDbContext>
{
protected override void Seed(MyDbContext context)
{
context.AddSomeInitialData();
context.SaveChanges();
}
}
並在您的應用程序啓動設置爲數據庫初始化:
Database.SetInitializer(new MyDbInitializer());
謝謝。看起來很明顯吧! – RiddlerDev 2012-07-18 13:47:39
您也可以通過遷移避免此問題: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
Wo w謝謝你。只要仔細閱讀,就必須更多地消化它,但是一旦我退出開發過程,看起來就像是一個好方法。謝謝。 – RiddlerDev 2012-07-19 01:28:59