我正在尝试在我的MVC3项目中的共享View中引用System.Data.Entity.Validation(EF 4.1版本)命名空间。我已经能够使用以下方法引用其他外部库:
@using Example.Namespace
但是,当涉及到属于新的4.1 EntityFramework的库时,我无法做同样的工作。我尝试将以下内容添加到Views文件夹中的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),这似乎表明我需要添加名称空间声明到视图中的web.config文件部分(NOT THE PROJECT WEB.CONFIG)。
我仍在努力解决这个问题,我发现在View的web.config的system.web / compilation / assemblies部分添加程序集也“有效”,因为它会破坏所有智能感知或者给我一部分命名空间我想要。例如,我补充说:
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
这允许我在我的视图中键入System.Data.Entity,但之后在Intellisense中没有出现任何内容。如果我将其更改为:
<add assembly="System.Data.Entity.Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
关闭并重新打开我的项目后,intellisense打破了我视图中的所有内容,我看到以下错误:ASP.NET运行时错误:无法加载文件或程序集'System.Data.Entity.Validation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一。系统找不到指定的文件。
答案 0 :(得分:3)
好的,通过反复试验弄清楚了。
事实证明,您必须在根web.config或system.web / compilation / assemblies中的View的web.config中包含以下条目:
<add assembly="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
答案 1 :(得分: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>
如果您仍然卡住了,请至少发布您视图的前几行。