我正在尝试在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
在项目中引用(我可以操作控制器中的数据),但我无法在视图中使用它。
答案 0 :(得分:1)
您是否尝试过添加:
<%@ Import namespace="System.Data.Objects.DataClasses.EntityObject" %>
答案 1 :(得分:1)
这是您不应直接在页面上使用EF对象的另一个原因。如果你添加一个你不想显示的属性并碰巧使用Html.EditorFor会发生什么?该属性将被错误地写入页面进行编辑。
使用ViewModel,它只是一个具有您想要显示的属性的类。加载EF对象后,使用AutoMapper将值复制到ViewModel类 http://automapper.codeplex.com/
请参阅我的意思示例:
现在,如果你真的想坚持你当前使用的路线,那么一定要使用实体框架的POCO模板,他们将在你的项目中自动安装代码生成模板(.tt),以便你的EF对象被视为'基本课程(即POCO课程),他们将免于您正在经历的这个行李。您的View应该不知道您正在使用哪种数据访问框架,并且不需要额外的引用来使其正常工作。你显然模糊了这些层。
答案 2 :(得分:1)
我希望你已经包括
System.Data.Entity的
进入项目参考。
现在:
转到程序集部分:
<compilation debug="true" targetFramework="4.0">
<assemblies>
.....
</assemblies>
</compilation>
添加:<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
希望它有效!