在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> 

如果你仍然坚持,请张贴至少前几行你的看法。

+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