[英]Repository pattern, UoW pattern, plain NHibernate Session
关于Repository pattern
( UoW pattern
使用的讨论很多。 我很了解何时以及为何使用Repository pattern
。 假设我有几个聚合根。 下一步是什么? 我更喜欢哪种模式/实现? 为什么使用比普通NHibernate Session更复杂的解决方案的原因是什么?
谢谢!
存储库模式是一种抽象的,不需要。 它仅允许您预定义某些查询,这些查询可以在整个系统中多次使用,并且可以提高可读性。
该存储库使用工作单元(已由NHibernate的ISession
); 这是我的观点。
我要做的是在NHibernate的ISession上为您的项目创建一些扩展方法。 看起来像这样:
public class ISessionExtensions
{
public static IEmployeeRepository GetEmployeeRepository( this ISession session )
{
return new EmployeeRepository(session);
}
}
public class EmployeeRepository()
{
internal EmployeeRepository( ISession s )
{
}
public IEnumerable<Employee> GetEmployeesFromDepartment( Department d )
{
...
}
}
然后,在您的代码中,您可以执行以下操作:
using( ISession s = _sessionFactory.OpenSession() )
{
var repository = s.GetEmployeeRepository();
...
}
存储库模式在NHibernate之前。 现在我们在NHibernate之上应用存储库模式,这在大多数情况下是不必要的抽象。 通用存储库作为NHibernate之上的抽象层的思想是,在某些时候您可以切换到其他持久机制,例如Entity Framework。 真? 那可能吗? 我认为不是,因为您最终会遇到这么多NH细节,例如缓存,提取等。对我而言,简单的Session使用是可以的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.