Я разрабатываю веб-сервис, используя NHibernate, WCF и Oracle 11g R1. Веб-сервис довольно прост: он сопоставляет DTOs с POCOs и выполняет на них различные операции CRUD на основе вызванной операции. Каждый объект имеет свой собственный набор методов CRUD - это временный, но необходимый на данный момент.NHibernate: несколько объектов, одна транзакция - несколько репозиториев?
Я ищу информацию о хорошем шаблоне репозитория, который будет поддерживать этот слой обслуживания 1: 1 CRUD и теперь не будет полностью удален, когда API должен стать более надежным. Сейчас пользователи будут обновлять объекты, используя эту услугу «по частям», но позже эти операции будут более надежными. То есть Операция службы будет работать с несколькими объектами.
Итак, в качестве примера у меня есть сущности A, B и C. Будут операции CRUD для A, B и C. В настоящее время, когда потребитель работает с A локально, он чаще всего также работает с B и C. Когда он использует службу для взаимодействия A, B и C, ей необходимо будет сделать три отдельных вызова службы. Большая часть бизнес-логики сейчас находится на потребителе, но когда это переместится на уровень обслуживания, будет создана служебная операция, чтобы он мог работать с A, B и C в одном вызове.
Я сделал изрядное количество погуглить на Repository модели и NHibernate (и WCF), до сих пор я прочитал:
http://daniel.wertheim.se/2009/10/21/nhibernate-hbmnhibcontext-fluentnhibcontext/ NHibernate session management in WCF application http://davybrion.com/blog/2008/06/managing-your-nhibernate-sessions/ http://davybrion.com/blog/2009/12/using-nhibernate-in-your-service-layer/ http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
И куча других. Две основные вещи, которые я хочу достичь:
- Один ISession по запросу
- Один ITransaction по запросу
Я думал, что это будет иметь смысл иметь Repository за объектом в настоящее время, а затем в конечном итоге некоторый тип совокупный корневой репозиторий может быть добавлен поверх них, когда операции обслуживания были более сложными. Это было бы необходимо?
Спасибо.
Спасибо за эту статью! Думаю, я дам что-то вроде этого. –