2014-07-21 82 views
0

我看過的每個EF教程都要求使用LocalDB或SQL Express以EF代碼優先的方式使用。SQL實例上的實體框架

有沒有辦法使用代碼優先的EF連接到傳統的SQL DB(2014)實例並讓EF在DB中創建模式?或者,當切換到生產時,我是否必須連接到具有現有匹配模式的數據庫?

將LocalDB用於開發目的很好,但是在部署到生產環境時,我想插入實際和現有的SQL DB。有沒有辦法做到這一點,而不需要插入一個手動模式匹配EF模型的數據庫?

+1

快速和普通安裝沒有區別,您是否嘗試將連接字符串設置爲真正的數據庫並查看會發生什麼? –

+0

我試圖連接到SQL數據庫的本地主機實例,它工作正常,但如果我更新模型,它會中斷,因爲數據庫架構不會由EF自動更新(我必須去Mgmt Studio並調整該模式與EF模型相匹配)。 – Jesse

+0

如何更新LocalDb數據庫的模式? – DavidG

回答

1

我會嘗試使用實體框架的代碼優先遷移(http://msdn.microsoft.com/en-us/data/jj591621.aspx)。

短版:

1)在你的DbContext,初始化類似CreateDatabaseIfNotExists設置爲Database.SetInitializer<YourDbContext>(new CreateDatabaseIfNotExists<YourDbContext>());

這將使EF創建數據庫,如果沒有數據庫存在(第一次應用程序運行) 。

2)接下來,進入包管理器控制檯,選擇您的數據庫項目(如果單獨),並輸入命令Enable-Migrations。這將創建一些遷移腳手架和初始遷移。

每當你在代碼從此改變你的數據庫模型,請執行下列操作步驟:

3)你已經改變了你的代碼,第一個模型後,轉到軟件包管理器控制檯中,選擇數據庫項目,並鍵入命令Add-Migration MigrationNameHere這將支持可以應用於數據庫的新的單獨遷移。注意,這個命令將運行在當前連接字符串配置中的任何數據庫。

4)要應用遷移並將數據庫更新到新模式,請鍵入命令Update-Database。如果一切順利,你的數據庫將被更新(與數據)到新的模式!您現在應該能夠運行您的MVC項目沒有數據庫錯誤。

請記住,這是db-migrations的最基本版本,請首先在虛擬項目上嘗試一下,當然還要備份您的數據。如果更改很複雜,或者需要執行特殊的數據遷移,則可以在執行更新數據庫之前編輯已創建的Migrations文件夾中的腳手架遷移代碼。

希望這有助於!