Метод ContextCreating в EntityDataSource не может преобразовать сущности в ObjectContext

Используя EntityFramework, я создал EntityDataModel (файл.edmx) в App_Code\DAL. В мастере я назвал сущности "DLGDBEntities". У меня есть ряд EntityDataSources в.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.

Другие вопросы по тегам