2013-09-28 150 views
36

我有一個解決方案 - 一個項目是類庫的.edmx數據模型 另一個是asp.net web窗體項目。類型'System.Data.Entity.DbContext'在未引用的程序集中定義。你必須添加一個引用程序集'EntityFramework 2

當我啓動溶液I中出現以下情況例外:

類型「System.Data.Entity.DbContext」在未引用的組件定義的。您必須添加對程序集'EntityFramework,版本= 5.0.0.0,文化=中立,PublicKeyToken = b77a5c561934e089'的引用。

當我在我的asp.net項目中看到引用時,我看到了對我的類的引用,我看不到對實體框架的引用。但問題是,實體框架,無論是在我的類庫和網絡工程安裝

+0

*我看不到對實體框架的引用。但問題是,實體框架安裝...在我的... web項目*刪除NuGet包並再次添加它。 –

回答

44

我想你EntityFramework版本通過使用NuGet包安裝程序混淆

請下載正確的版本。

見入門討論:The type or namespace name 'DbContext' could not be found

而且看這個同樣的問題,答:是Here

+2

謝謝,那幫助我。原因是:我的'packages.config'文件中聲明的'entityframework.dll'是'5.0.0',這個版本沒有'DbContext'類型,現在我更新了版本(和我的nuget)到版本'6.0.0',現在它正在工作。 – MrMins

6

我建議你檢查:

Allow NuGet to download missing packages during build打勾 請參閱本link

+0

默認情況下,最新版本的NuGet具有此功能。另外,我對@Maris問題稱之爲「解決方法」。這是使用NuGet的一部分,如果你想避免檢查軟件包到你的SCM。 –

11

我發現這個解決方案適合我。

添加實體框架DLL參考: -

  1. 進入C:\ Program Files文件(x86)的\微軟ASP.NET \ ASP.NETMVC 4 \包\ 5.0.0的EntityFramework-RC \ LIB \ net45

  2. 添加實體框架DLL

+1

我還必須從相同的位置添加'EntityFramework.SqlServer',在我的情況下是MVC5而不是MVC4。 – toddmo

1

我有同樣的問題,我終於解決了這個問題。你應該做的是卸載你的電腦上的每個實體框架實例。如果您使用安裝文件安裝了它,則必須將其從添加/刪除程序中刪除,並且如果您使用塊金程序包安裝它,則必須從此處卸載它。

然後你再次使用塊組件安裝並重新啓動你的visual studio。這解決了我的問題。

+0

這救了我。只是爲了澄清,但我只需要從我的項目中刪除所有實例。在我的情況下,我試圖從.net移植到.net內核,並且此解決方案適用於我。 –

0

當我將一個項目從SVN拖到一臺新電腦時,遇到了這個問題。通過NuGet安裝實體框架解決了這個問題。我安裝了最新版本,現在是6.1.1

+0

我這樣做了,但仍然存在問題 –

+0

如果您有多個項目,是否在需要它的所有項目上安裝nuget包?此外,你有沒有檢查實體框架參考中的DLL路徑,以確保它是正確的? – Bruno

0

我已經有了正確版本的實體框架DLL,並且其他答案都沒有爲我工作:我必須在項目中選擇EntityFramework引用,然後在屬性中將「特定版本」設置爲true。

2

如果某人有多個項目,則需要將其安裝到需要它的項目中。另外幫助我的是更改默認項目,然後通過包管理器控制檯進行安裝並解決它。

0

錯誤消息告訴你帶有.edmx數據模型的類庫加載了實體框架5(顯然,因爲.edmx中沒有錯誤消息)...並且您的Web項目正在引用類庫...因此它可以訪問類庫中的所有內容......但它無法處理類庫中的數據類型,因爲您的Web項目需要對實體框架5的引用。您還會注意到,您的智能感知不適用於您的類庫中的對象。

只需在您的web項目中添加一個引用到實體框架5 ...和您的所有集合中。

0

在* .csproj文件中添加正確的引用。在我的CAS我已經添加下面的* .csproj文件和問題解決。

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
    <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
0

做到這一點,將解決這個問題,因爲它似乎你還沒有正確安裝實體框架或它不能正常工作,轉到 工具>庫包管理器>包管理器控制檯在VS2012和類型install-package EntityFramework

相關問題