Ссылка на пространство имен EntityFramework 4.1 в MVC3 Razor View - PullRequest
3 голосов
/ 21 сентября 2011

Я пытаюсь сослаться на пространство имен System.Data.Entity.Validation (версия EF 4.1) внутри общего представления в моем проекте MVC3. Я был в состоянии ссылаться на другие внешние библиотеки, используя:

@using Example.Namespace

Однако я не могу заставить работать то же самое, когда речь идет о библиотеках, которые являются частью новой версии 4.1 EntityFramework. Я попытался добавить следующее в файл web.config в папке Views:

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

Я думаю, что я на правильном пути, потому что теперь intellisense взрывается для других внешних пространств имен, которые раньше работали. Может кто-нибудь помочь мне понять, как именно должна выглядеть запись web.config для этого?

РЕДАКТИРОВАТЬ: чтобы быть ясным, я пытаюсь в конечном итоге использовать DbEntityValidationException в моем представлении, которое, насколько я знаю, является частью библиотеки EntityFramework 4.1 DLL. Я следую за информацией в этом посте (/2984415/kak-importirovat-prostranstvo-imen-na-stranitse-prosmotra-razor), которая, кажется, предполагает, что мне нужно добавить объявление пространства имен в раздел файла web.config в Views (НЕ THE WEB.CONFIG ПРОЕКТА).

Я все еще работаю над этим, и я обнаружил, что добавление сборок в раздел system.web / compilation / assembly сборок представления web.config также «работает» в том смысле, что оно либо нарушает все значения 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, Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'или одна из ее зависимостей. Система не может найти указанный файл.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Хорошо, разобрался методом проб и ошибок.

Как выяснилось, у вас должна быть следующая запись в корневом каталоге web.config или в представлении web.config внутри system.web / compilation / сборки:

<add assembly="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
0 голосов
/ 21 сентября 2011

Интересно, для меня это нормально работает, если я это сделаю:

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

Если вы 'все еще застряли, пожалуйста, напишите хотя бы первые несколько строк вашего представления.

...