2013-03-30 24 views
49

我想知道如何運行生產數據庫的'更新數據庫'命令。實體框架代碼優先 - 如何爲生產數據庫運行更新數據庫

「更新,數據庫」數據庫工作正常,從我的本地機器,但我如何得到這個對生產數據的工作?因此,如果我對應用程序進行了更改,然後通過visual studio運行「發佈」,這對於代碼事物來說工作正常,但是如何對生產數據運行「更新 - 數據庫」命令。

希望這個問題是有道理的......

感謝,

+1

[使用實體框架(第一代碼)在生產遷移]的可能的複製(http://stackoverflow.com/questions/10848746/using-entity-framework-code -first-migrations-in-production) –

回答

16

要什麼@大衛已經說過添加...

就個人而言,我不相信在「活」的場景automatic updates,我總是喜歡手動數據庫管理(例如,創建或更改Db所需的permissions存在問題 - 更不用說共享主機等了) - 但是從我所看到的情況來看,在同步時遷移非常穩定(實際上,唯一的方法'解開'他們通常是刪除Db並強制全面/全新更新)。

這是我前段時間就如何對scriptsynchronize database/code進行的發佈,並針對部署方案(以及何時出現問題)。它不適用於你(但),但要記住的東西。

MVC3 and Code First Migrations - "model backing the 'blah' context has changed since the database was created"

+0

爲什麼這麼複雜?當應用程序第一次啓動/使用上下文時,自動簡單地運行遷移代碼有什麼問題? SQL腳本如何比調用C#方法更好? –

+1

@FlorianWinter在理想情況下和相對簡單的情況下都是如此,如果你知道自己在做什麼(例如數據庫管理和遷移表)。但是,遲早你會遇到一些問題,不同步等等。而且你有在那裏一直不能被觸及的實時數據。我真的不相信遷移或任何初始化工具爲我做這件事。這源於多年來我見過的無數問題。所以當數據存在時,我喜歡完全控制。我可以讓應用程序運行並「自我遷移」,但只有在我重新檢查後。和結垢等 – NSGaga

+0

點採取,我同意。我將添加一條警告和鏈接您的答案給我的答案,但我會將其留在那裏,因爲這些簡單的方案確實存在。至少暫時... –

4

你只是想自動更新數據庫的最新版本時何地您的應用程序運行(開發和生產)?

這可能不是一個好主意,除非在非常簡單的情況下,您知道你可以信任的自動遷移和手工遷移數據庫(一個或多個)是不可行的。請看這個答案:https://stackoverflow.com/a/15718190/2279059。如果你忽視這個警告,請繼續閱讀。

以下內容添加到web.config

<entityFramework> 
<contexts> 
    <context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false"> 
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" /> 
    </context> 
</contexts> 

這可能看起來有點嚇人,但它基本上與下面的代碼:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>()); 

如果你有web.config沒有運氣,那麼你也可能會嘗試將此代碼放入Global.asax。我個人更喜歡配置代碼。

如果你希望你的配置文件看起來更清潔,也可以從模板MigrateDatabaseToLatestVersion類派生新類,所以你不必使用晦澀的語法傳遞類型參數在web.cofig文件:

public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {} 

這樣做是設置一個數據庫初始化程序,它將數據庫自動更新到最新版本。

(源和更多細節:http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html

相關問題