[英]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.