Подтвердить что ты не робот

Преобразование DBContext в ObjectContext для использования с GridView

У меня есть проект 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".

4b9b3361

Ответ 1

Попробуйте следующее:

var context = new YourDbContext();
var adapter = (IObjectContextAdapter)context;
var objectContext = adapter.ObjectContext;

Ответ 2

Попробуйте этот вариант →

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

Ответ 3

Через 2 дня борьбы я нашел эту ссылку , которая мне очень помогла. Я работаю с VS 2012, и у меня была такая же проблема с DBContext.
Согласно ссылке, в VS2012 генератор кода по умолчанию был изменен для создания объектов POCO и DBContext в отличие от объектов, полученных из EntityObject и ObjectContext, который по умолчанию использовался в VS2010.
В обозревателе решений в рамках модели вашего объекта вам нужно удалить шаблоны tt, а в дизайнере - щелкнуть по поверхности дизайнера, а затем в свойствах изменить стратегию генерации кода от "Нет" до "По умолчанию", чтобы получить объекты на основе EntityObject и полученные ObjectContext контекст.