将DBContext转换为ObjectContext以与GridView一起使用

将DBContext转换为ObjectContext以与GridView一起使用,gridview,entity-framework-4.1,ef-code-first,entitydatasource,Gridview,Entity Framework 4.1,Ef Code First,Entitydatasource,我有一个webforms项目,使用EF codefirst保存数据。 我想使用GridView和EntityDataSource来保存编写CRUD。 这可能吗 我可以将DBContext转换为EntityDataSource期望的ObjectContext吗 以下是我尝试过的: <asp:EntityDataSource ID="OrdersDataSource" runat="server" ContextTypeName="SomeNamespace.Models.ShopDBCont

我有一个webforms项目,使用EF codefirst保存数据。 我想使用GridView和EntityDataSource来保存编写CRUD。 这可能吗

我可以将DBContext转换为EntityDataSource期望的ObjectContext吗

以下是我尝试过的:

<asp:EntityDataSource ID="OrdersDataSource" runat="server" ContextTypeName="SomeNamespace.Models.ShopDBContext" 
     EnableFlattening="False" EntitySetName="Orders" EntityTypeFilter="Order" EnableDelete="False" 
     EnableUpdate="False" Include="OrderLines" OrderBy="it.Id"> 
</asp:EntityDataSource>

<asp:GridView ID="OrdersGridView" runat="server" AllowPaging="True" AllowSorting="True" 
     AutoGenerateColumns="True" DataKeyNames="Id" DataSourceID="OrdersDataSource" /> 

但是我得到了一个例外:

无法将“SomeNamespace.Models.ShopDBContext”类型的对象强制转换为“System.Data.Objects.ObjectContext”类型

试试这个:

var context = new YourDbContext();
var adapter = (IObjectContextAdapter)context;
var objectContext = adapter.ObjectContext;
试试这个->

protected void OrdersDataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)  
{   
    var context = new YourContext();
    e.Context = ((IObjectContextAdapter)context).ObjectContext;
}

经过两天的努力,我发现这对我帮助很大。我正在使用VS 2012,我对DBContext也有同样的问题
根据链接,VS2012中的默认代码生成器更改为生成POCO实体和DBContext,而不是VS2010中默认的从EntityObject和ObjectContext派生的实体

在解决方案资源管理器中,在实体模型下,您需要删除tt模板,在设计器中,右键单击设计器界面,然后在属性中将代码生成策略从“无”更改为“默认”,以获取基于EntityObject的实体和ObjectContext派生的上下文。

可能的重复事实上它是重复的,谢谢(注意:搜索“DBContext ObjectContext GridView”会找到这个问题,但不会找到答案)上帝一直在到处寻找这些行。谢谢!这可能是个愚蠢的问题,但如果“YourDbContext”继承了“IObjectContextAdapter”,为什么要强制转换它?难道“YourDbContext”不应该实例化ObjectContext吗?因为IObjectContextAdapter接口只有一个属性(ObjectContext)在DbContext类上以私有方式实现。请检查此链接