Переход от сущностей с самостоятельным отслеживанием к DBContext

Я читал, что самоотслеживающие объекты (STE) теперь устарели, и Microsoft больше не будет вкладывать в них средства.

В настоящее время я работаю над n-уровневым приложением, в котором клиентский код вызывает вызовы методов службы WCF для получения объектов с самостоятельным отслеживанием. В моем клиентском коде нет такой вещи, как DBContext: он имеет дело только с самими сущностями.

Поскольку самоотслеживающая сущность имеет внутри себя код отслеживания изменений, клиентский код может легко работать с ними, и на самом деле легко отправить изменения обратно в базу данных.

Я попробовал шаблоны t4 генератора DBContext EF4, но они генерируют сущности без учета сохранения, поэтому мой клиентский код не может работать с ними для отслеживания изменений, как это было с STE.

Можно ли перейти от такого проекта к проекту, основанному на DBContext, без необходимости переписывать большую часть клиентского кода, а также код службы WCF?


person Community    schedule 09.01.2013    source источник


Ответы (1)


Существует шаблон генератора STE для EF 5.x и на его информационной странице написано:

Мы больше не рекомендуем использовать шаблон STE в новых приложениях, он по-прежнему доступен для поддержки существующих приложений. Посетите страницу приложений N-уровня, чтобы узнать о других вариантах, которые мы рекомендуем для сценариев N-уровня.

Это отвечает на ваш вопрос. Если вы хотите использовать STE, не переписывая приложение, вам следует использовать шаблон и файлы ObjectContext. Теоретически вы можете использовать DbContext, потому что вы можете создать новый экземпляр DbContext из существующего ObjectContext (через конструктор). Я не уверен, какую пользу это принесет с STE.

MS рассматривает службы данных WCF и их клиентский контекст как замену STE.

person Ladislav Mrnka    schedule 10.01.2013
comment
@Ladslav Mrnka, где мы можем найти примеры кода для создания нового экземпляра DbContext из существующего ObjectContext (через конструктор)? - person Don; 28.12.2014