Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在MVC3 Razor视图中引用EntityFramework 4.1命名空间_Asp.net Mvc 3_Entity Framework_Razor_Ef Code First - Fatal编程技术网

Asp.net mvc 3 在MVC3 Razor视图中引用EntityFramework 4.1命名空间

Asp.net mvc 3 在MVC3 Razor视图中引用EntityFramework 4.1命名空间,asp.net-mvc-3,entity-framework,razor,ef-code-first,Asp.net Mvc 3,Entity Framework,Razor,Ef Code First,我试图在MVC3项目的共享视图中引用System.Data.Entity.Validation(EF 4.1版本)命名空间。我可以通过以下方式参考其他外部库: @using Example.Namespace 但是,对于作为新4.1 EntityFramework一部分的库,我无法实现同样的功能。我已尝试将以下内容添加到“视图”文件夹中的web.config中: <add namespace="System.Data.Entity.Validation, EntityFramework,

我试图在MVC3项目的共享视图中引用System.Data.Entity.Validation(EF 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" />

我认为我的思路是正确的,因为现在intellisense正在为以前工作的其他外部名称空间爆炸。有人能帮我弄清楚这个web.config条目应该是什么样子吗

编辑:要清楚,我试图最终在我的视图中使用DbEntityValidationException,据我所知,它是EntityFramework 4.1 DLL的一部分。我在这篇文章中跟踪信息(http://stackoverflow.com/questions/3239006/how-to-import-a-namespace-in-razor-view-page)这似乎表明我需要将名称空间声明添加到视图(而不是项目web.config)中web.config文件的部分

我仍在研究这个问题,我发现将程序集添加到视图的web.config的system.web/compilation/assemblies部分也“有效”,因为它要么破坏了所有intellisense,要么给了我想要的部分命名空间。例如,我补充说:

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

有趣的是,如果我这样做,对我来说效果很好:

@using System.Data.Entity
您确定在项目引用中引用了
EntityFramework

在你的razor视图中是否还有其他原因导致了这个问题

我的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>


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

好的,通过尝试和错误解决

事实证明,在root web.config或system.web/compilation/assemblies内的视图web.config中必须有以下条目:

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


看看。。。我编辑了我的问题。添加@using System.Data.Entity后,您是否能够在视图中使用System.Data.Entity.Validation成员?我认为您的命名空间错误。实际上是
System.Data.Entity.Validation
具有
DbEntityValidationException
而不是
System.Data.Entity
。因此,
@使用System.Data.Entity.Validation应该可以做到这一点。一旦我将其放入测试页面,Intellisense允许我执行
抛出新的DbEntityValidationException()
。顺便说一句,如果您使用的是Visual Studio,您可以通过右键单击引用文件夹中的程序集并选择“在对象浏览器中查看”轻松确定名称空间中的类。抱歉,输入错误。我知道它在System.Data.Entity.Validation中-我可以让intellisense在我的代码中除Razor视图以外的任何地方拾取该类。您的环境中是否安装了“Microsoft ADO.NET Entity Framework 4.1-Update 1”?使用ASP.NET MVC3的VS 2010?如果这对你有用的话,我的环境一定会有所不同。