3

昨天我「將我的PC從Windows 7升級到Windows 8」,所以現在我使用Visual Studio 2012,並打開我的Visual Studio 2010項目。未找到'System.Data.Entity.Infrastructure.SqlConnectionFactory'類型的構造函數

該項目一直運行良好,但它不適用於Visual Studio 2012.我有一些奇怪的錯誤,但我修復了這些錯誤。現在,我留下了一個錯誤,我只是無法修復,無法找到關於谷歌什麼:

我得到這個異常:

未能Database.DefaultConnectionFactory設置的一個實例在應用程序配置中指定的'System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework'類型。詳情請參閱內部例外。

用下面的InnerException:在類型

構造「System.Data.Entity.Infrastructure.SqlConnectionFactory找不到。

我的web.config看起來很標準:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-WebUI-201253192737;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

的SqlConnectionFactory類存在,它有2個構造函數(一個無參數,另一個將連接字符串)。我通過在我的C#代碼中創建一個SqlConnectionFactory來測試它。

我已經刪除了Entity Framework並重新安裝了它,但那並沒有解決問題。

我正在使用實體框架5.0 RC(在VS2010中正常工作,如前所述)與SQL Server 2012 +工具和IIS Express。

+0

您是否使用Nuget安裝EntityFramework? – devuxer

+0

是的............ –

回答

8

我修復了這個問題。我改變了這一點:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

要:

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

而現在它的工作原理。有點愚蠢,但我想提供連接字符串作爲參數。

我在VS 2012中用實體框架創建了一個新的MVC 4項目,並比較了Web.Config文件,發現了這一點。我注意到另一個區別。

我的實體框架程序集有版本4.4.0.0(雖然我從NuGet安裝了5.0 RC)。我創建的新項目有一個5.0.0.0版的程序集。任何人都可以解釋嗎?

1

一對夫婦的事情,你可以檢查:

  • 它試圖連接到SQL Express。是否安裝了SQL Express?當您升級Windows時,安裝過程中發生了什麼。
  • 嘗試連接到SQL Express的程序的安全上下文是什麼?它可能是一個權利問題?

編輯一對夫婦更多的想法:

  • 相關的.NET Framework版本爲項目選擇
  • 相關EF是如何引用,都要參照?複製local = true?
+0

1)是的,我安裝了SQL Server 2012 +工具,我可以通過SSMS連接到SQL Server。 –

+0

2)我給每個可用的用戶提供了每個可用的角色,沒有工作。這會導致不同的錯誤(之前在Windows 7上有過)。這個錯誤顯然有一段時間與EF庫(它無法找到構造函數?)有關。 –

+0

所有項目的.NET版本都是4.0,並且copy local爲true。 –

-2

我相信從EF V4.3升級到V5.0 Ef中現有項目的好方法是使用的NuGet命令

update-package EntityFramework -pre 

這將更新configsection在配置文件EF 5

+0

我強烈建議不要使用上面的代碼來解決這個問題。 -pre安裝該軟件包的最新預發佈版本,在安裝EF6 alpha的這篇文章中。 – matto0

相關問題