我目前正在玩弄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);
}
}
}
这是否是管理NHibernate会话/工厂的最佳方法?我听说过工作单元和创建每个Web请求的会话并在结束时刷新它的事情。据我所知,我的当前实现没有做任何这些。基本上,它依靠存储库从会话工厂获取会话并使用它来运行查询。
以这种方式访问数据库有什么缺陷吗?