9

我已經使用Visual Studio 2012,.NET 4.5和Entity Framework 5.0創建了一個MVC 3.0應用程序。實體框架代碼首先數據遷移不適用於VS2012 Web部署

使用代碼優先數據遷移,我能夠正確地將模型更改傳播到本地測試數據庫,但我無法弄清楚如何在使用Web部署部署到分段和生產服務器時使其發揮作用。

我看了下面的文章......

http://msdn.microsoft.com/en-us/library/dd394698(v=vs.110)#dbdacfx

...這也解釋了什麼是應該發生的,但它不是爲我工作,爲Web部署似乎無法檢測到我使用實體框架。本教程顯示了一個複選框啓用的Code First遷移的執行...

Web Deploy Publish Dialog

...但我的對話框中顯示的唯一Update Database複選框爲每個數據庫。

我已經讀過,爲了使Visual Studio檢測到使用實體框架上下文,Web.config必須包含一個定義它的元素。這裏是我的:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 

    <contexts> 
     <context type="MyContext, MyAssembly"> 
      <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContext, MyAssembly], [MyConfig, MyAssembly]], EntityFramework"> 
       <parameters> 
        <parameter value="MyConnectionStringName"/> 
       </parameters> 
      </databaseInitializer> 
     </context> 
    </contexts> 
</entityFramework> 

任何意見將不勝感激。

感謝,

回答

3

我發現通過實驗解決這個問題。

事實上,我的MVC應用程序是由VS2012通過轉換VS2010解決方案創建的。由於轉換過程沒有報告任何問題,因此我認爲它已正確轉換了所有內容,包括髮布配置文件。

但是,我發現問題在於這些配置文件的轉換,除非我手動編輯它們的XML文件,顯然無法讓舊的導入配置文件參與代碼優先遷移。

在轉換的解決方案中簡單創建新的發佈配置文件會導致預期的行爲。

+1

關懷給我們的分歧破敗? –

+1

@Richard:在內,新創建的配置文件包含許多其他元素,每個元素表示一個上下文類。我假設有某種發現過程在Web Deploy首次執行時運行,而不是作爲VS2012解決方案轉換的一部分執行。 –

0

嘗試此: 啓用-遷移-Force

確保下面被設置爲true AutomaticMigrationsEnabled = TRUE;

重新發布 - 爲我工作

相關問題