Я ищу эталонную реализацию шаблона «Единица работы» и «хранилище» для MS SQL Server или простого старого ADO.NET. Но все примеры построены на основе существующего контекста, такого как Linq2SQL или EF. Насколько я понимаю, эти технологии сами практически реализуют эту модель.
Но как мне работать с «простым» SQL-репозиторием без какого-либо контекста и методов SaveChanges ()? Правильный ли способ использования TransactionScope? Например, собрать все операции SQL в список команд, а затем просто выполнить их одну за другой в пределах области Tx ... или это слишком просто?
Почему я ищу это? У меня есть задача создать слой данных, который может работать как с древней базой данных Sybase, так и с SQL Server (может быть, дополнительным в сочетании с компонентом EF4 на основе POCO)
Для этого моя идея состоит в том, чтобы создать слой абстракции с репозиторием и шаблоном единицы работы и создать различные реализации для каждой технологии.
Обновление:
Я был в отпуске на прошлой неделе. Извините за задержку. Сегодня я построил базовую картину моей архитектуры для этого. [ссылка] (s7.directupload.net/file/d/2570/whb7ulbs_jpg.htm). Моя идея состоит в том, чтобы создать простой ObjectContext, такой как EF ObjectContext, который существует параллельно с EF Context и используется моим репозиторием. Этот контекст собирает транзакции Sql ATOM в виде стека и выполняет их в транзакции в части единицы работы. Отличная идея? Плохая идея? Трудно сделать? Я с нетерпением жду ваших мнений по этому вопросу.