9

我最近将我们的 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 类型的大小写表达式转换为 ObjectContext 类型(显式类型转换为 System.Data.Entity.Core.Objects.ObjectContext 之后)

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

4

3 回答 3

14

从 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 />控件替换到<ef:EntityDataSource />您的 aspx 页面中。

最后一步是进入您的代码并更新 EntityDataSourceContextCreatingEventArgs 或任何其他类型的 EFContext 标记的引用。

protected void OnContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e){... } 

protected void OnContextCreating(object sender, Microsoft.AspNet.EntityDataSource.EntityDataSourceContextCreatingEventArgs e){... } 

一切正常,我不必在程序集中引用 System.Data.Entity。

于 2014-07-31T18:31:30.093 回答
2

EF6 的实体数据源控件可用自 2014 年 1 月 30 日起处于预览状态(详情请参阅此 Microsoft 公告)。它是可用的作为一个 nuget 包:http ://www.nuget.org/packages/Microsoft.AspNet.EntityDataSource/

如果您尝试从 nuget 包管理器下载它,请务必选择顶部组合框中的“包含预发布”项。

于 2014-02-08T19:54:00.993 回答
0

根据 IDE 给出的建议,我们可以进入 NuGet 包控制台,运行以下命令安装新的 Entity Framework 数据源:

Install-Package Microsoft.AspNet.EntityDataSource

此外,添加以下包(如本文所述):

Install-Package Microsoft.AspNet.DynamicData.EFProvider
于 2016-06-12T17:57:29.350 回答