Думали ли вы об использовании Fluent NHibernate? Для этого есть множество статей в Интернете и множество статей о ТАК !! Вот одна из таких статей: преобразование в менеджер сеансов Fluent NHibernate .
РЕДАКТИРОВАТЬ:
Я думал о твоей ситуации, и я скажу тебе, как я обычно думаю. Во-первых, я подумаю о том, что именно я хочу, чтобы мой слой Gateway делал (именно этот слой я использую для общения со средой персистентности). Теперь большинство скажет: я хочу, чтобы он говорил с базой данных, или я хочу вставить и обновить материал. Но недавно я обнаружил, что этого недостаточно! На полпути через кодирование слоя шлюза с учетом этих вопросов я внезапно понял, что хочу сделать что-то немного другое, и бум, я не мог сделать это с помощью NHibernate очень легко. Итак, я пошел на несколько уступок и пошел с Linq-ToSql, поскольку он поддерживал требование более высокого приоритета по сравнению с некоторыми тонкостями NHibernate.
Теперь причина моей истории в том, что NHibernate предоставляет несколько замечательных маленьких функций, таких как Result Transformation. Я могу посмотреть на мою базу данных с массой объединенных таблиц, дать псевдоним для каждого поля и с прекрасным преобразователем результата, взрыв, он мгновенно превращается в мое DTO. Не поймите меня неправильно, у Linq-To-Sql есть нечто подобное с автоматически сгенерированными классами. Но я не хочу, чтобы они были видны за пределами слоя шлюза (другой разговор). В равной степени Linq-To-Sql легко обрабатывает транзакции - я думал, что NHibernate не очень хорошо справляется!
Итак, все сводится к следующему: каковы мои Точные требования на уровне моего шлюза / хранилища и какие технологии совместимы с моей средой персистентности ?! И теперь я могу думать о том, какую технологию я хочу использовать.
Я понимаю, что, возможно, я не ответил на ваш вопрос как таковой, но я надеюсь, что это дало вам возможность подумать!
Удачного кодирования,
Cheers,
Крис.