專案內建基於 NHibernate 的 ORM 實作,採用 IRepository<T> 模式(參考 Rhino.Commons),封裝 CRUD 操作。核心類別 NHibernateRepository<T>:
public class NHibernateRepository<T> : IRepository<T>, IRepository where T : class {
private readonly ISessionManager sessionManager;
public NHibernateRepository(ISessionManager sessionManager) { this.sessionManager = sessionManager; }
private ISession Session { get { return sessionManager.OpenSession(); } }
public T GetById(int id) { return Session.Load<T>(id); }
public IQueryable<T> GetAll() { return Session.Linq<T>(); }
public void InsertOnSubmit(T entity) { Session.Save(entity); }
public void DeleteOnSubmit(T entity) { Session.Delete(entity); }
public void SubmitChanges() { Session.Flush(); }
// 非泛型介面显式實作...
}

透過 ISessionManager 抽象 Session 生命週期,配合 Castle Windsor 管理元件生命週期,實現乾淨的 Repository 抽象層。