Ответ 1
Попробуйте следующее:
var context = new YourDbContext();
var adapter = (IObjectContextAdapter)context;
var objectContext = adapter.ObjectContext;
У меня есть проект webforms с использованием EF codefirst для сохранения данных. Я хотел бы использовать GridView и EntityDataSource, чтобы сохранить запись CRUD. Возможно ли это?
Могу ли я преобразовать свой DBContext в объект ObjectContext, ожидаемый EntityDataSource?
Вот что я пробовал:
<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;
}