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

Man*_*der 9 entity-framework entitydatasource entity-framework-6

我最近将我们的Webforms应用程序从EF 4.4升级到EF6,并且我使用Entity Datasource控件获得了很多编译时构建错误.通常,我在尝试访问上下文对象时会出现这些错误:

e.Context
Run Code Online (Sandbox Code Playgroud)

我遵循了以下相同的演练: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表达式不能键入ObjectContext(在显式类型转换为System.Data.Entity.Core.Objects.ObjectContext之后)

任何人都可以帮忙解决这个问题吗?

Ser*_*gey 13

当我从EF 5升级到EF 6时,我刚刚完成了这个练习,我遇到了同样的错误.

这是我必须做的.

Install-Package Microsoft.AspNet.EntityDataSource
Run Code Online (Sandbox Code Playgroud)

它将在页面下的web.config中注册一个新的EntityDataSource控件:

<pages>
  <controls>
    <add tagPrefix="ef" assembly="Microsoft.AspNet.EntityDataSource" namespace="Microsoft.AspNet.EntityDataSource" />
  </controls>
</pages>
Run Code Online (Sandbox Code Playgroud)

下一步是将现有<asp:EntityDataSource />控件替换为<ef:EntityDataSource />aspx页面.

最后一步是在你的代码去后面和更新EntityDataSourceContextCreatingEventArgs或任何其他类型EFContext标签的引用.

protected void OnContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e){... } 
Run Code Online (Sandbox Code Playgroud)

protected void OnContextCreating(object sender, Microsoft.AspNet.EntityDataSource.EntityDataSourceContextCreatingEventArgs e){... } 
Run Code Online (Sandbox Code Playgroud)

这一切都有效,我没有在程序集中引用System.Data.Entity.

  • 此外,您应该删除属性DefaultContainerName和ConnectionString,并在EntityDataSource上设置ContextTypeName. (2认同)