簡體   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