使用Nhibernate + Repository模式的建议方法是什么?
我有很多不同的文章和意见,我不知道该走哪条路.以这篇冗长的文章为例.它给出了Query对象的示例,但每个具体的存储库都ISession在其构造函数中接受.在BL(业务层)中,我应该关心NH会话?
创建一堆存储库,每个存储库都有一堆特定的方法?
显然,这是太多的工作,因为BL现在"被允许"意识到NHibernate(存储库是新的Singleton)?
创建一个通用存储库,但IQueriable<T>在BL中公开和使用LINQ
现在有一个LINQ-to-NHibernate将无法处理的查询(或者我需要在一百个查询中手动调整一次SQL).使用自定义repo方法很容易,但依赖于LINQ的代码几乎不可能.仅仅因为LINQ在某些情况下被破坏而使用两者都是无稽之谈.
查询对象?
QueryOver也是特定于NH的,这意味着BL再次意识到DAL的实现.
另一种方法?
显然,我需要能够在某处管理事务,可能使用工作单元模式(尽管周围也有许多不同的实现).