在MVC3 Razor View中引用EntityFramework 4.1命名空间

时间:2011-09-20 21:57:59

标签: asp.net-mvc-3 entity-framework razor ef-code-first

我正在尝试在我的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'或其依赖项之一。系统找不到指定的文件。

2 个答案:

答案 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>

如果您仍然卡住了,请至少发布您视图的前几行。

相关问题