NHibernate和存储库设计模式

时间:2014-02-19 15:10:33

标签: nhibernate

我已经和NHibernate合作了很长一段时间,并且已经意识到我的架构可能有点过时了。这是一个NHibernate库,它存在于几个相互关联的应用程序之后。

首先,我有一个带有ID和EntityID的DomainEntity基类(当我将一个项目暴露给Web或通过API而不是内部整数id时,我使用这个guid - 我想我有这一点的原因,但我不确定它现在真的有效)。我有一个Repository基类,其中T继承自DomainEntity,它提供了一组通用搜索方法。 DomainEntity的继承者还可以实现几个跟踪创建日期,创建日期等内容的接口,这些接口主要是对象的最新更改的日志。我不喜欢为此使用存储库模式,但它包含了在保存对象时设置这些值的逻辑(前提是该对象是通过存储库保存的,而不是保存为保存其他内容的一部分)。

我想摆脱存储库。它们不会让我开心,而且这些日子看起来真的很混乱,尤其是现在我不是在用hql查询,现在我可以在Session对象上使用扩展方法了。但是如何干净地连接这种功能呢?让我们假设为了讨论的目的,我有类似结构图设置的东西,并且能够返回暴露上下文信息的对象(当前用户等),在存储库结构之外提供这种功能的灵活方式是什么?奖励点如果可以与基于约定的映射设置连接(我正在寻找替换XML文件)。

1 个答案:

答案 0 :(得分:0)

如果您不喜欢存储库随着时间推移而变得臃肿的事实,那么您可能希望使用类似Query Objects的内容。

基本思想是将单个查询分解为单个对象,然后将其应用于数据库。

一些示例实现链接here