Метод ContextCreating в EntityDataSource не может преобразовать сущности в ObjectContext
Используя EntityFramework, я создал EntityDataModel (файл.edmx) в App_Code\DAL. В мастере я назвал сущности "DLGDBEntities". У меня есть ряд EntityDataSource
s в.aspx, где я установил OnContextCreating
атрибут UseSurveyContext, который выглядит следующим образом:
protected void UseSurveyContext(object sender, EntityDataSourceContextCreatingEventArgs e)
{
e.Context = surveyContext;
}
Установочный код для surveyContext выглядит следующим образом:
DLGDBEntities surveyContext;
и в Page_Load:
surveyContext = new DLGDBEntities();
Все вышеперечисленное выглядит как один и тот же код, который я видел в каждом руководстве (например: http://msdn.microsoft.com/en-us/library/cc668193.aspx), и я могу поклясться, что у меня был это работает.
Теперь, однако, я получаю ошибку: Cannot implicitly convert type 'DAL.DLGDBEntities' to 'System.Data.Objects.ObjectContext'
Что я сделал не так, и почему это сработало раньше?
1 ответ
Элемент управления EntityDataSource работает только с ObjectContext. Вы можете получить свой ObjectContext из вашего DbContext с помощью ((IObjectContextAdapter)context).ObjectContext
, Обратите внимание, что в Visual Studio 2012 генератор кода по умолчанию был изменен, чтобы генерировать объекты POCO и DBContext, в отличие от объектов, производных от EntityObject и ObjectContext, которые использовались по умолчанию в Visual Studio 2010.
РЕДАКТИРОВАТЬ
Как указал Свен в комментариях, была выпущена новая, совместимая с EF6 версия EntityDataSourceControl, которая принимает экземпляр EF6 DbContext.