Проблема не в вашем коде, проблема на самом деле в том, что вы пытаетесь восстановить свой edmx
в более высокой версии EntityFramework
. Возможно, вы могли бы изменить свой старый проект VS2010 в VS2013.
В предыдущей версии Entity Framework модель, созданная с помощью EF Designer, создавала контекст, производный от ObjectContext, и классы сущностей, производные от EntityObject.
Начиная с EF4.1, мы рекомендуем переключиться на шаблон генерации кода, который создает контекст, производный от классов сущностей DbContext и POCO.
В Visual Studio 2012 вы получаете код DbContext, сгенерированный по умолчанию для всех новых моделей, созданных с помощью EF Designer. Существующие модели будут продолжать генерировать код на основе ObjectContext, если только вы не решите переключиться на генератор кода на основе DbContext.
Источник: MSDN
Решение
Сергей Березовский описал решение следующим образом: ЭТО сообщение SO.
Вы должны либо использовать стратегию генерации кода None для вашего файла .edmx
. Или удалите шаблоны MainModel.tt
и MainModel.Context.tt
, которые генерируют объекты модели и контекст.
Если вы используете стратегию генерации кода по умолчанию, то сущности и контекст будут сгенерированы в файл MainModel.Designer.cs
. Это будут стандартные сущности, унаследованные от EntityObject
, контекст будет унаследован от ObjectContext
. С Entity Framework 5
у нас есть генерация POCO
сущностей. И вся генерация выполняется в T4
шаблонах, которые генерируют контекст, унаследованный от DbContext
, и POCO
сущностей без какого-либо базового типа (ну, только объект).
Если у вас есть оба шаблона и включена генерация кода в дизайнере edmx, будут созданы два набора сущностей. Вот почему у вас конфликт имен.
Вы можете найти ЭТО ТАК пост полезен для того, чтобы прояснить ваше понимание и решение этой проблемы.
person
Zeeshan
schedule
03.10.2015