关于这个问题,已经有几个类似的问题了,但我仍然没有找到足够的理由来决定应该走哪条路。
真正的问题是,是否合理地使用存储库模式抽象化NHibernate,或者不?
看起来抽象化的唯一原因是为了留下一个选项,以便在需要时用不同的ORM替换NHibernate。 但是创建存储库和抽象化查询似乎就像添加另一层,并且手动完成大量的管道工作。
一种选择是将IQueryable<T>
暴露给业务层并使用LINQ,但从我的经验来看,NHibernate对LINQ的支持还没有完全实现(查询不总是按预期工作,我讨厌花时间调试框架)。
虽然在我的业务层中引用NHibernate让我感到不舒服,但它本身应该是数据访问的抽象,对吧?
你对此有何看法?