Использование объекта Entity Model в ASP.Net MVC View Page - PullRequest
1 голос
/ 08 февраля 2012

Я пытаюсь использовать объект Entity Framework на странице просмотра для ASP.Net MVC 3 (Razor view), и я почти уверен, что делал это раньше. Однако по какой-то причине я не могу заставить его работать в этом проекте:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0012: The type 'System.Data.Objects.DataClasses.EntityObject' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Source Error:

Line 1:  @model Data.Post

На это ссылаются в проекте (я могу манипулировать данными в контроллере), но я не могу заставить его работать в представлении.

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Это еще одна причина, по которой вы не должны использовать объекты EF непосредственно на странице.Что произойдет, если вы добавите свойство, которое вы не хотите отображать, и используете Html.EditorFor?Это свойство будет ошибочно записано на страницу для редактирования.

Используйте ViewModel, который является не чем иным, как классом со свойствами, которые вы хотите отобразить.Как только вы загрузите свой объект EF, скопируйте значения в класс ViewModel, используя AutoMapper http://automapper.codeplex.com/

Посмотрите пример того, что я имею в виду здесь:

http://weblogs.asp.net/shijuvarghese/archive/2010/02/01/view-model-pattern-and-automapper-in-asp-net-mvc-applications.aspx

Теперь, если вы действительно хотите придерживаться маршрута, который вы используете в настоящее время, то непременно используйте шаблоны POCO для Entity Framework, и они автоматически установят шаблоны генерации кода (.tt) в ваш проект, чтобы ваши объекты EF рассматривались как«базовые классы (то есть классы POCO), и они будут свободны от багажа, который вы испытываете.Ваш View не должен знать, какую платформу доступа к данным вы используете, и не должен нуждаться в дополнительных ссылках для его работы.Вы явно размываете слои.

1 голос
/ 24 июня 2013

Я надеюсь, что вы включили

System.Data.Entity

в ссылку на ваш проект.

Сейчас:

  1. ОткройтеФайл Web.config
  2. Перейти в раздел сборок: <compilation debug="true" targetFramework="4.0"> <assemblies> ..... </assemblies> </compilation>

  3. Добавить: <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

Надеюсь, что это работает!

1 голос
/ 08 февраля 2012

Вы пробовали добавить:

<%@ Import namespace="System.Data.Objects.DataClasses.EntityObject" %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...