我最近将我的Webforms应用程序从EF 4.4升级到EF6,并且我使用Entity Datasource控件获得了很多编译时构建错误。通常,我在尝试访问上下文对象时会出现这些错误:
e.Context
我遵循了http://entityframework.codeplex.com/wikipage?title=Updating%20Applications%20to%20use%20EF6
中给出的相同演练显示的错误信息是:
1)模块System.Data.Entity。应引用version =“4.0.0.0”
2)不能将System.Data.Objects.ObjectContext类型的case表达式赋予 type ObjectContext(显式地输入到System.Data.Entity.Core.Objects.ObjectContext后)
有人可以帮忙解决这个问题吗?
答案 0 :(得分:13)
当我从EF 5升级到EF 6时,我刚刚完成了这个练习,我遇到了同样的错误。
这是我必须做的。
Install-Package Microsoft.AspNet.EntityDataSource
它将在web.config页面下注册一个新的EntityDataSource控件:
<pages>
<controls>
<add tagPrefix="ef" assembly="Microsoft.AspNet.EntityDataSource" namespace="Microsoft.AspNet.EntityDataSource" />
</controls>
</pages>
下一步是将现有的<asp:EntityDataSource />
控件替换为aspx页面中的<ef:EntityDataSource />
。
最后一步是进入您的代码并更新EntityDataSourceContextCreatingEventArgs或任何其他类型的EFContext标记的引用。
这
protected void OnContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e){... }
要
protected void OnContextCreating(object sender, Microsoft.AspNet.EntityDataSource.EntityDataSourceContextCreatingEventArgs e){... }
一切正常,我没有在程序集中引用System.Data.Entity。
答案 1 :(得分:2)
自2014-01-30以来,EF6的实体数据源控件在预览中可用(this Microsoft announcement中的详细信息)。它可以作为nuget包使用:http://www.nuget.org/packages/Microsoft.AspNet.EntityDataSource/
如果您尝试从nuget包管理器下载它,请务必在顶部组合框中选择“include prerelease”项。
答案 2 :(得分:0)
根据IDE提供的建议,我们可以转到NuGet Package Console并运行以下命令来安装新的Entity Framework数据源:
Install-Package Microsoft.AspNet.EntityDataSource
另外,添加以下包(如this文章中所述):
Install-Package Microsoft.AspNet.DynamicData.EFProvider