在MVC3 Razor视图中引用EntityFramework 4.1命名空间
我想在我的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'或其依赖项之一。该系统找不到指定的文件。
好吧,通过反复试验找出它。
事实证明,您必须在您的任根web.config中的System.Web /编译/组件内的以下条目,或查看的web.config:
<add assembly="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
有趣的,它工作正常,我如果我这样做:
@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>
如果你仍然坚持,请张贴至少前几行你的看法。
看看..我编辑了我的问题。你是否能够在你的视图中使用System.Data.Entity.Validation成员,一旦你添加@using System.Data.Entity? – DMC
我想你有错误的命名空间。它实际上是'System.Data.Entity.Validation',它具有'DbEntityValidationException'而不是'System.Data.Entity'。所以,'@using System.Data.Entity.Validation'应该可以做到。一旦我把它放在我的测试页面中,Intellisense让我做'抛出新的DbEntityValidationException()'。 – devuxer
顺便说一句,如果你使用的是Visual Studio,你可以通过右键单击References文件夹中的程序集并选择“在对象浏览器中查看”,轻松找出哪些类在什么名称空间中。 – devuxer