2016-11-02 31 views
3

我對使用數據庫優先方法的實體框架以及如何使用它部署解決方案非常熟悉。代碼第一次遷移是否自動在服務器上運行?

基本上,在我使用數據庫優先方法的解決方案中,我有一個Web客戶端項目,它使用數據庫訪問庫項目,該項目使用數據庫優先方法進行編碼。因此,我首先編寫一些SQL Server腳本來添加新表(或進行模式更改)。

接下來,轉到數據訪問庫項目,使用EF edmx designer從現有數據庫更新.net,編譯此數據訪問層,並在客戶端Web項目中自動更新DDL引用。

當我解決方案部署到生產服務器:

  1. 首先,我需要運行生產SQL服務器
  2. 接下來在T-SQL腳本,我部署2周更新的DDL(一個對於網絡和1對於數據訪問層)在Web服務器上。

現在,我有一個新的應用程序,其中包含一個Web項目和一個使用EF Code First方法的數據訪問層項目。 我是EF代碼第一種方法的新手。我知道每次更改數據庫模式時(例如添加新表),我都需要在Visual Studio的包管理控制檯中運行代碼優先遷移,以便讓我的後端數據庫實例更改/更新。

我的問題:

當我將應用程序部署到生產,什麼是我應該遵循哪些步驟?

如何使用EF Code First方法更新生產SQL服務器?

這是一個自動過程,還是我必須像在Visual Studio下在Package Management Console下手動運行遷移一樣?

謝謝。

回答

5

如果您使用的是Azure,那麼您可以將其配置爲具有自動過程,如下所示。

enter image description here

否則,您必須手動做這樣的:

你必須創建一個數據庫的腳本,之後您可以在生產數據庫運行它。

PM>更新,數據庫-Script

你可以參考這個文檔:Getting a SQL Script

,我normaley使用另一種選擇:

當我需要運行aginst生產遷移db,我更改我的conn字符串以反映生產數據庫,然後運行:

PM>更新 - 數據庫

+0

不知道Azure的選項;這很酷。還有其他自動方式。 – BradleyDotNET

+0

是的,如果你使用的是Azure,你可以輕鬆完成:)@BradleyDotNET – Sampath

+0

嗨Sampath。非常感謝你的回答。看起來,當我將應用程序部署到生產服務器時,我必須在VS中運行遷移代碼,並將數據庫連接字符串更改爲生產。 –

1

您有幾個遷移選項。

  1. 可以使用更新的數據庫的-Script(如@Sampath註釋)生成一個腳本
  2. 您可以運行更新,數據庫-ConnectionString =「YourDbString」,它會做到這一點對生產數據庫爲您
  3. 您可以使用遷移初始化程序,並在應用程序啓動時使用應用程序連接字符串運行遷移。通過將一個類似的線在你的初始化程序做到這一點:

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

哪裏Context是你的DbContext類型,Configuration是當你所做的第一次遷移產生的配置類。

更多信息請參閱本MSDN文章:https://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

你的第三個選擇的問題是,我們是否需要每次更改'conn'?我的意思是'dev'到'prod'? – Sampath

+0

@Sampath是和否,你應該改變連接字符串*已經*因此生產應用程序與生產數據庫交談,並通過這樣做初始化器將工作。 – BradleyDotNET

+0

Fourth =>您可以提供一個dacpac:D DBA,就像那個解決方案 – CodeNotFound

相關問題