Referencing EntityFramework 4.1 namespace in MVC3 Razor View

一曲冷凌霜 提交于 2019-12-07 15:57:15

问题


I am trying to reference the System.Data.Entity.Validation (EF 4.1 version) namespace inside of a shared View in my MVC3 project. I've been able to reference other external libraries using:

@using Example.Namespace

I cannot, however, get the same thing to work when it comes to libraries that are part of the new 4.1 EntityFramework. I have tried adding the following to the web.config within the Views folder:

<add namespace="System.Data.Entity.Validation, EntityFramework, Version=4.1.10715.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

I think I am on the right track, because now the intellisense is blowing up for other external namespaces that used to work. Can someone help me figure out exactly what the web.config entry should look like for this?

EDIT: to be clear, I am trying to ultimately use DbEntityValidationException in my view, which, as far as I know, is part of the EntityFramework 4.1 DLL. I am following information in this post (http://stackoverflow.com/questions/3239006/how-to-import-a-namespace-in-razor-view-page) which seems to suggest I need to add the namespace declaration to the section of the web.config file within Views (NOT THE PROJECT WEB.CONFIG).

I am still working through this and I have found that adding assemblies to the system.web/compilation/assemblies section of the View's web.config also 'works' in that it either breaks all intellisense or gives me part of the namespace I want. For example, I added:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

That allows me to type System.Data.Entity in my view, but nothing appears in Intellisense after that. If I change it to:

<add assembly="System.Data.Entity.Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

After I close and re-open my project, the intellisense breaks on everything in my view and I see the following error: ASP.NET runtime error: Could not load file or assembly 'System.Data.Entity.Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.


回答1:


Okay, figured it out through trial and error.

As it turns out, you must have the following entry in either your root web.config, or the View's web.config inside of system.web/compilation/assemblies:

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



回答2:


Interesting, it works fine for me if I do:

@using System.Data.Entity

Are you sure you've referenced EntityFramework in your project References?

Could there be something else in your razor view that's causing the problem?

I don't have anything special in my Web.config, but I'll paste the sections just in case:

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

If you're still stuck, please post at least the first few lines of your view.



来源:https://stackoverflow.com/questions/7492287/referencing-entityframework-4-1-namespace-in-mvc3-razor-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!