实体DataSource无法使用Entity Framework 6升级

时间:2013-11-05 15:08:49

标签: entity-framework entity-framework-6 entitydatasource

我最近将我的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后)

有人可以帮忙解决这个问题吗?

3 个答案:

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