EntityDataSource中的ContextCreating方法无法将实体转换为ObjectContext

mca*_*lex 1 c# entity-framework objectcontext

使用EntityFramework,我在App_Code\DAL中创建了一个EntityDataModel(.edmx文件).在向导中,我将实体命名为"DLGDBEntities".我EntityDataSource在.aspx中有一些s,我将OnContextCreating属性设置为'UseSurveyContext',如下所示:

protected void UseSurveyContext(object sender, EntityDataSourceContextCreatingEventArgs e)
{
   e.Context = surveyContext;
}
Run Code Online (Sandbox Code Playgroud)

surveyContext的设置代码如下:

DLGDBEntities surveyContext;
Run Code Online (Sandbox Code Playgroud)

并在Page_Load中:

surveyContext = new DLGDBEntities();
Run Code Online (Sandbox Code Playgroud)

以上所有内容看起来与我在每个教程中看到的代码相同(例如:http://msdn.microsoft.com/en-us/library/cc668193.aspx#1),我可以发誓我已经拥有了它工作.

然而,现在,我收到错误: Cannot implicitly convert type 'DAL.DLGDBEntities' to 'System.Data.Objects.ObjectContext'

我做错了什么,为什么之前有效呢?

Paw*_*wel 9

EntityDataSource控件仅适用于ObjectContext.您可以使用从DbContext获取ObjectContext ((IObjectContextAdapter)context).ObjectContext.请注意,在Visual Studio 2012中,默认代码生成器已更改为生成POCO实体和DBContext,而不是从EntityObject和ObjectContext派生的实体,这是Visual Studio 2010中的默认实现.

编辑

正如Sven在评论中指出的那样,一个新的EF6兼容版本的EntityDataSourceControl已经发布,它采用了EF6 DbContext实例.

  • 我一定错过了你的评论.您需要删除tt模板,并在设计器中右键单击设计器表面,然后在属性中将代码生成策略从None更改为Default以获取基于EntityObject的实体和ObjectContext派生上下文. (2认同)
  • 目前,新的Microsoft ASP.NET EntityDataSource控件可通过NuGet用于EF> = 6.0.0.它接受新的DbContext. (2认同)