我目前正在玩的HybridSessionBuilder类发现在Jeffrey Palermo的博客文章:
http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
使用这个类,我的存储库看起来像这样:
public class UserRepository : IUserRepository { private readonly ISessionBuilder _sessionBuilder; public UserRepository(ISessionBuilder sessionBuilder) { _sessionBuilder = sessionBuilder; } public User GetByID(string userID) { using (ISession session = _sessionBuilder.GetSession()) { return session.Get<User>(userID); } } }
这是管理NHibernate会话/工厂的最好方法吗?我听说过关于工作单元的事情,并为每个Web请求创建一个会话,并在最后刷新它。从我可以告诉,我目前的实现不是做任何这些。它基本上依赖于Repository从会话工厂获取会话,并使用它来运行查询。
这样做数据库访问有任何陷阱吗?