2015-11-08 111 views
0

我有一個帶有代碼優先實體框架的MVC Web應用程序。我們將這個應用程序安裝在各種計算機上作爲本地應用我進行了遷移以升級數據庫(在這種情況下,我添加了一個新表),並且在升級後運行遷移後,我想將初始數據插入數據庫,以便用戶可以添加/編輯/刪除它們,但是我不希望桌子第一次變空。EF遷移後插入初始值

有沒有辦法在升級時自動執行它,而無需手動運行SQL腳本?

+0

搜索EF播種的數據庫,這可能幫助你 – brykneval

+0

種子不僅在第一次創建數據庫時?只需經過特定的遷移 – TamarG

+0

並且我不希望我的代碼將運行多次,如果我將來添加更多遷移... – TamarG

回答

1

移民類有up方法,您可以使用SQL覆蓋它並插入/更新記錄:

public override void Up() { 
AddColumn("dbo.Posts", "Abstract", c => c.String()); 
Sql("UPDATE dbo.Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL"); 
} 

Source

+0

謝謝!有效!我用了很多Sql(「INSERT [dbo] .....」)並且它完美地完成了。 – TamarG

0

是的。您基本上編寫了一個類來有條件地檢查並插入值,然後將此類鏈接到實體框架數據庫初始化程序。每次執行遷移時它都會運行,但我認爲您可以在運行時準確更改(例如,應用程序啓動)。

此鏈接會給你粗略的想法: Entity Framework Inserting Initial Data On Rebuild

我有我的電腦上一個確切的代碼示例,但我不會它,直到明天。如果這個鏈接不完全符合你的要求,我明天可以向你發送一些代碼。