c# - 存储库模式,UoW模式,普通NHibernate session

标签 c# nhibernate design-patterns repository-pattern unit-of-work

关于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();
    ...
}

关于c# - 存储库模式,UoW模式,普通NHibernate session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8645751/

相关文章:

c# - 绑定(bind)图表系列

c# - FluentNhibernate 公式与连接表中的参数进行映射

c# - 紧凑框架 2.0 的 Environment.NewLine 等价物

nhibernate - NHibernate Join Fetch(种类)

c# - 这是对静态属性的错误使用吗?

c# - 如何在 wpf 中制作多色分段进度条?

sql - 使用 NHibernate 选择每第 n 行

NHibernate ByteCode 提供程序源

java - 创建Factory来创建领域对象的正确方法

c# - 重构我的代码 : Conditions based on different variables