asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 在ASP.NET MVC中的NHibernate会话管理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在玩的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从会话工厂获取会话,并使用它来运行查询。

这样做数据库访问有任何陷阱吗?

解决方法

你不应该将你的ISession包装在using语句中 – 将ISessionBuilder传递给库构造函数(依赖注入)的意义是调用代码负责控制ISession的生命周期。通过将它包装在一个使用中,Dispose()在ISession上被调用,你将不能延迟加载对象成员或持久化它。

我们通过将一个ISession传递给存储库构造函数来做类似的事情。巴勒莫的代码,我理解它,只是增加了惰性初始化的ISession。我不认为这是必要的,因为如果你不打算使用它,为什么你会新建一个存储库?

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc – 在ASP.NET MVC中的NHibernate会话管理全部内容,希望文章能够帮你解决asp.net-mvc – 在ASP.NET MVC中的NHibernate会话管理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。