我最近将我们的 WebForms 应用程序从 EF 4.4 升级到 EF6,并且使用实体数据源控件时出现了很多编译时生成错误。通常,我在尝试访问上下文对象时在所有情况下都会遇到这些错误:
e.Context
我遵循了与中给出的相同的演练:http://entityframework.codeplex.com/wikipage?title=Updating%20Applications%20to%20use%20EF6
显示的错误信息是:
1)模块系统.数据.实体。版本="4.0.0.0" 应引用
2) 不能将类型为 System.Data.Objects.ObjectContext 的表达式大小写 类型 ObjectContext(显式类型转换为 System.Data.Entity.Core.Objects.ObjectContext 后)
任何人都可以帮助解决这个问题吗?
我刚刚在从 EF 6 升级到 EF 5 时完成了此练习,并且遇到了相同的错误。
这是我必须做的。
Install-Package Microsoft.AspNet.EntityDataSource
它将在 web.config 中的 pages 下注册一个新的实体数据源控件:
<pages>
<controls>
<add tagPrefix="ef" assembly="Microsoft.AspNet.EntityDataSource" namespace="Microsoft.AspNet.EntityDataSource" />
</controls>
</pages>
下一步是替换现有的<asp:EntityDataSource />
控件以在 aspx 页中<ef:EntityDataSource />
。
最后一步是进入代码隐藏并更新 EntityDataSourceContextCreationEventArgs 或任何其他类型的 EFContext 标记的引用。
从
protected void OnContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e){... }
自
protected void OnContextCreating(object sender, Microsoft.AspNet.EntityDataSource.EntityDataSourceContextCreatingEventArgs e){... }
这一切都有效,我不必在程序集中引用System.Data.Entity。
EF6 的实体数据源控件自
根据 IDE 给出的建议,我们可以转到 NuGet 包控制台并运行以下命令来安装新的实体框架数据源:
Install-Package Microsoft.AspNet.EntityDataSource
此外,添加以下包(如本文中所述):
Install-Package Microsoft.AspNet.DynamicData.EFProvider