在ASP.Net MVC视图页面中使用实体模型对象

时间:2012-02-08 00:41:45

标签: asp.net-mvc-3 entity-framework model

我正在尝试在ASP.Net MVC 3(Razor视图)的视图页面中使用Entity Framework对象,我很确定我之前已经这样做了。但是,无论出于何种原因,我都无法在这个项目中使用它:

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 个答案:

答案 0 :(得分:1)

您是否尝试过添加:

<%@ Import namespace="System.Data.Objects.DataClasses.EntityObject" %> 

答案 1 :(得分:1)

这是您不应直接在页面上使用EF对象的另一个原因。如果你添加一个你不想显示的属性并碰巧使用Html.EditorFor会发生什么?该属性将被错误地写入页面进行编辑。

使用ViewModel,它只是一个具有您想要显示的属性的类。加载EF对象后,使用AutoMapper将值复制到ViewModel类 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模板,他们将在你的项目中自动安装代码生成模板(.tt),以便你的EF对象被视为'基本课程(即POCO课程),他们将免于您正在经历的这个行李。您的View应该不知道您正在使用哪种数据访问框架,并且不需要额外的引用来使其正常工作。你显然模糊了这些层。

答案 2 :(得分:1)

我希望你已经包括

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

  4. 希望它有效!