我目前正在使用Jeffrey Palermo的博客文章中的HybridSessionBuilder类:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是管理NHibernate会话/工厂的最佳方式吗?我听说过有关工作单元的事情,并根据网络请求创建会话并在最后将其刷新.据我所知,我当前的实现并没有做到这一点.它基本上依赖于Repository从会话工厂中获取会话并使用它来运行查询.
以这种方式进行数据库访问是否有任何陷阱?