【发布时间】:2011-03-29 03:50:34
【问题描述】:
我正在使用 NHibernate、WCF 和 Oracle 11g R1 开发 Web 服务。 Web 服务非常简单:它将 DTO 映射到 POCO,并根据调用的操作对它们执行各种 CRUD 操作。每个实体都有自己的一组 CRUD 方法 - 这是暂时的,但暂时是必要的。
我正在寻找一个良好的存储库模式的输入,该模式现在将支持这个 1:1 CRUD 服务层,并且在 API 需要变得更健壮时不会被完全丢弃。目前,消费者将使用此服务“逐个”更新实体,但稍后,这些操作将更加健壮。 IE。一项服务操作将与多个实体合作。
因此,作为一个示例,我有实体 A、B 和 C。将有针对 A、B 和 C 的 CRUD 服务操作。目前,当消费者在本地与 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
我认为现在每个实体都有一个存储库是有意义的,然后当服务操作变得更加复杂时,最终可以在这些存储库之上添加某种类型的聚合根存储库。那还有必要吗?
谢谢。
【问题讨论】:
标签: .net nhibernate design-patterns transactions