存储库模式,UoW模式,简单的NHibernate Session

lex*_*eme 1 c# nhibernate design-patterns unit-of-work repository-pattern

关于使用的讨论很多Repository pattern,UoW pattern.我完全理解何时以及为何Repository pattern使用.我只想说我有几个聚合根.下一步是什么?我更喜欢什么模式/实现?使用比普通NHibernate Session更复杂的解决方案的原因是什么?

谢谢!

Fre*_*els 5

存储库模式是一种抽象,它不是不必要的.它只允许您预定义可在整个系统中多次使用的某些查询,并且它提高了可读性.

存储库使用工作单元(已经由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 )
    {
      ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在您的代码中,您可以这样做:

using( ISession s = _sessionFactory.OpenSession() )
{
    var repository = s.GetEmployeeRepository();
    ...
}
Run Code Online (Sandbox Code Playgroud)