2011-09-20 76 views
3

我想在我的MVC3項目中引用共享視圖內的System.Data.Entity.Validation(EF 4.1版本)命名空間。我已經能夠使用引用其他外部庫:在MVC3 Razor視圖中引用EntityFramework 4.1命名空間

@using Example.Namespace 

我不能,然而,得到工作的同樣的事情,當談到這是新4.1的EntityFramework的零件庫。我曾嘗試加入以下到瀏覽文件夾中的web.config文件:

<add namespace="System.Data.Entity.Validation, EntityFramework, Version=4.1.10715.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 

我覺得我在正確的軌道上,因爲現在的智能感知是吹起來爲用於工作的其他外部名稱空間。有人可以幫我弄清楚web.config條目應該看起來像這樣嗎?

編輯:說清楚,我試圖最終在我的視圖中使用DbEntityValidationException,據我所知,它是EntityFramework 4.1 DLL的一部分。我在這篇文章(http://stackoverflow.com/questions/3239006/how-to-import-a-namespace-in-razor-view-page)下面的信息似乎建議我需要添加命名空間聲明Views中的web.config文件部分(不是PROJECT WEB.CONFIG)。

我仍然通過這個工作,我發現添加程序集到視圖的web.config的system.web /編譯/集會部分也'工作',因爲它要麼打破所有intellisense或給我的一部分我想要的命名空間。例如,我說:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 

,讓我在我看來鍵入System.Data.Entity的,但沒有後,顯示在智能感知。如果我將其更改爲:

<add assembly="System.Data.Entity.Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 

後,我關閉並重新打開我的項目,智能感知中斷在我看來一切,我看到以下錯誤:ASP.NET運行時錯誤:無法加載文件或程序'System.Data.Entity.Validation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依賴項之一。該系統找不到指定的文件。

回答

3

好吧,通過反覆試驗找出它。

事實證明,您必須在您的任根web.config中的System.Web /編譯/組件內的以下條目,或查看的web.config:

<add assembly="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
0

有趣的,它工作正常,我如果我這樣做:

@using System.Data.Entity 

你確定你引用您的項目中引用EntityFramework

在你的剃鬚刀視圖中是否還有別的東西會導致問題?

我沒有什麼特別在我的web.config,但我會貼以防萬一部分:

<pages> 
    <namespaces> 
    <add namespace="System.Web.Helpers" /> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="System.Web.WebPages" /> 
    </namespaces> 
</pages> 

<compilation debug="true" targetFramework="4.0"> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </assemblies> 
</compilation> 

如果你仍然堅持,請張貼至少前幾行你的看法。

+0

看看..我編輯了我的問題。你是否能夠在你的視圖中使用System.Data.Entity.Validation成員,一旦你添加@using System.Data.Entity? – DMC

+0

我想你有錯誤的命名空間。它實際上是'System.Data.Entity.Validation',它具有'DbEntityValidationException'而不是'System.Data.Entity'。所以,'@using System.Data.Entity.Validation'應該可以做到。一旦我把它放在我的測試頁面中,Intellisense讓我做'拋出新的DbEntityValidationException()'。 – devuxer

+0

順便說一句,如果你使用的是Visual Studio,你可以通過右鍵單擊References文件夾中的程序集並選擇「在對象瀏覽器中查看」,輕鬆找出哪些類在什麼名稱空間中。 – devuxer

相關問題