繁体   English   中英

存储库模式,UoW模式,普通NHibernate会话

[英]Repository pattern, UoW pattern, plain NHibernate Session

关于Repository patternUoW 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使用是可以的。

在这里ayende谈论了一段时间
和更多...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM