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

Mys*_*ter 29 gridview entitydatasource ef-code-first entity-framework-4.1

我有一个使用EF codefirst的webforms项目来保存数据.我想使用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" /> 
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

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

mar*_*osz 72

试试这个:

var context = new YourDbContext();
var adapter = (IObjectContextAdapter)context;
var objectContext = adapter.ObjectContext;
Run Code Online (Sandbox Code Playgroud)

  • 这可能是一个愚蠢的问题,但如果'YourDbContext'继承'IObjectContextAdapter',你为什么要抛出它?'YourDbContext'不应该实例化ObjectContext吗? (2认同)