EntityDataSource和Entity Framework 6

我正在学习ASP.NET。 我来到EntityDataSorce控件。 我正在使用EF6。 我已经读过这个控件和EF6有一些问题,冲突,但是随着对EntityDataSource的最后更新,这个问题已经解决了。 http://blogs.msdn.com/b/webdev/archive/2014/02/28/announcing-the-release-of-dynamic-data-provider-and-entitydatasource-control-for-entity-framework-6。 ASPX

我试图按照上面的链接。 首先,我创建一个.edmx模型

在此处输入图像描述

使用NuGet安装新的EntityDataSource Contro

在此处输入图像描述

我添加了两个EntityDataSource控件,并将其中一个的前缀更改为ef。 所以我有两个控件,其中一个是旧的,另一个是新的更新

在此处输入图像描述

当我点击旧的时,我可以看到配置弹出窗口并进入配置数据源屏幕。 但是当点击新的时没有弹出窗口。 那么,我该如何配置数据源呢? 这有什么问题?

在此处输入图像描述

Web.config文件

     

Default.aspx的:

        

使用EF6时不支持用户界面。 我们不再建议将实体数据源用于新项目,因此我们只是提供了一个可用于EF6的数据源。 您需要直接在标记中执行配置。

Dov Miller的答案很接近,但对我不起作用,因为我不明白我为ContextTypeName命名的是什么。 我用设计器创建了我的模型,但在解决方案中没有找到任何从ObjectContext派生的名称。

所以我在看了很multithreading之后做了这个:

  1. 而不是ContextTypeName,添加了指向我的类的Set属性的EntitySetName属性。

  2. 选中EntityDataSource并双击事件OnContextCreating以创建事件方法。 在其中输入以下代码以将DbContext转换为ObjectContext并解析IObjectContextAdapter以添加正确的using子句。

    var context = new MyModelContainer(); e.Context =((IObjectContextAdapter)context).ObjectContext;

它最终作为gridview的数据源。

在此主题中找到了上述解决方案,其中user2076170的答案显示了上面步骤2中的事件代码。 我自己找到了第1步。

我也遇到了这个问题,我找到了“模型绑定” http://www.asp.net/web-forms/overview/presenting-and-managing-data/model-binding/retrieving-data

该post贯穿了构建“Code First”数据模型类的过程,但是我只是将ItemType与通过“EF Designer from database …”过程生成的类进行了切换,并且工作得很好。

希望这可以帮助仍在搜索的人。

麦克风

我从这个链接中了解到Entity DataSource没有在Sergey的答案中使用Entity Framework 6 Upgrade ,你可以将旧的EntityDataSource从工具箱中删除到设计器,然后将标记前缀更改为ef而不是asp 。 (我在Seminda对此问题的评论中得到了链接)。 之后,您可以在设计器和属性窗口中继续使用它,它可以工作。

答案提到如果你使用EntityDataSource的事件,你必须改变后面的代码

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

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

关键是要将Microsoft.AspNet.EntityDataSource添加到EventArgs

同时删除属性DefaultContainerNameConnectionString ,并在EntityDataSource上设置ContextTypeName ,如LMK的评论中所述。

我希望这可以帮助那些仍然希望将EntityDataSource与设计者一起使用的人,而不仅仅是通过标记。