8

我最近升級了一個使用實體框架從V4.3.1到5.0的WFC項目。
我正在運行編碼遷移(不自動遷移)。發佈Web對話框沒有檢測到我的實體框架5上下文作爲代碼第一個

此前,我使用發佈配置文件來部署此解決方案並應用遷移。由於將項目升級到EF5,遷移部分不再起作用,並且發佈對話框沒有將上下文檢測爲具有代碼優先遷移。

具體而言,.pubxml文件已從檢測我的上下文更改爲<Object Type="DbCodeFirst">更改爲<Object type="DbDacFx">,這對我的上下文不正確。

作爲一種解決方法,我已經手動將<entityFramework>數據庫初始化程序配置添加到了我的web.config轉換中,但我想了解爲什麼發佈配置文件不起作用。這是一個更好的解決方案。

+0

看看[這個](http://stackoverflow.com/questions/16543229/publish-entity-framework-code-first-migrations-with-no-context-in-the-startup-pr/16558527 #16558527)發佈。 也許它可以幫助你...... – Liel

回答

0

您可能錯過了將EntityFramework的引用添加到項目中。通過添加引用,您應該能夠控制DbCodeFirst選項是否可用。

0

作爲this post suggests,請嘗試使用DbContext的完全限定名稱作爲連接字符串的名稱。相反的:

的Web.config

<connectionStrings> <add name="MyContext" .../> </connectionStrings>

用途:

的Web.config

<connectionStrings> <add name="MyNamespace.AnotherNamespace.MyContext" .../> </connectionStrings>

在我的情況下,爲了用我現有的publi sh配置文件(.pubxml),我也必須手動編輯<ObjectGroup Name="..." ...>。可能重新創建發佈配置文件也可以。

0

我有同樣的問題,但不在同一個上下文中。

我一直在使用Code First Migrations與現有的ASP.NET MVC 5.2.3應用程序使用EF 6.1.3一個月沒有問題。在某個時間點,我添加了對Windows Azure存儲的支持,但是我犯了一些錯誤:

  • 我添加了一個新項目。不幸的是我選擇了「控制檯應用程序」而不是「類庫」。我試圖通過將其更改回「項目設置」中的「類庫」來修復它
  • 我使用了Nuget到Install-Package WindowsAzure.Storage,但我將它安裝在MVC項目上,而不是在類庫上。我試圖通過對MVC項目做Uninstall-Package和其安裝到正確的項目來修復它
  • 我叫類類庫「WorkOrderStorage」
  • 我在web.config中和轉換添加ConnectionString,以<connectionStrings>元素在web.release.config

我想我的項目現在處於不一致的狀態。我注意到它會忘記Code First Migrations(我監視了對代碼的第一次遷移。pubxml文件):

  1. 當我把MVC項目和包含WorkOrderStorage類
  2. 當我在現有庫之一創建一個空的「WorkOrderStorage」級圖書館 之間的引用

最後,我通過從頭開始正確重新創建該庫作爲類庫來修復它(因爲觀察1)。我還命名了WorkOrderRepository類(因爲觀察2)。

2

當我合併另一個開發人員提交併觸發Visual Studio項目重裝時,它曾經發生過。這就是它如何導致「DbCodeFirst」到「DbDacFx」的變化。

如果我重新啓動Visual Studio,那麼一切都會回到它應該是的。

只是另一個想法。

+0

@josh並沒有把這個標記爲答案,除了投票之外,我只能向你表達我的感激之情, –

相關問題