当前位置:编程学习 > C#/ASP.NET >>

NHibernate Session is closed

ISession session = NHibernateHelper.GetCurrentSession();
              ITransaction it = session.BeginTransaction();
              bool flag = true;
              try
              {
                  VIP_RechargeBill entity = new VIP_RechargeBill();
                  entity.CreateTime = DateTime.Now;
                  entity.UpdateTime = DateTime.Now;
                  entity.RechargeId = RechargeId;
                  entity.RechargeValueTotal = Recharge;
                  entity.PresentValueTotal = Present;
                  entity.RechargeManager = user;
                  session.Save(entity);
                  
                  VIP_CardRechargeDetail detail = new VIP_CardRechargeDetail();
                    detail.CreateTime = DateTime.Now;
                    detail.UpdateTime = DateTime.Now;
                    detail.RechargeBill = entity;
                    detail.Card = VIP_CardAccess.GetTarget(hitT_CardId);
                    detail.RechargeMode = SysdictbaseAccess.GetTarget(RechargeModeId);
                    detail.RechargeValue = Recharge;
                    detail.PresentValue = Present;
                    //==============RechargeValueOver和PresentValueOver保存当前冲值总额消费后的余额
                    detail.RechargeValueOver = Recharge;
                    detail.PresentValueOver = Present;
                    //==============
                    detail.PresentStartTime = PresentStartTime;
                    detail.RechargeManager = user;
                    detail.PayStatus = SysdictbaseAccess.GetTarget("未缴款");
                    detail.PayInfo = SysdictbaseAccess.GetTarget("未对帐");
                    session.Save(detail);
                    //    更改T_Card表金额总数
                    VIP_Card tCard = detail.Card;
                    tCard.RechargeValue += detail.RechargeValue;
                    tCard.PresentValue += detail.PresentValue;
                    tCard.CardStatus = SysdictbaseAccess.GetTarget("已启用");
                    session.Save(tCard);
                    it.Commit();
              }
              catch (Exception ex)
              {
                  flag = false;
                  it.Rollback();
                  throw (ex);
              }
              NHibernateHelper.CloseSession();
              return flag;

执行第二次SAVE(session.Save(detail);)操作的时候就报这个错了。试了各种方法,重新获得SESSION,SESSION在次reconnect.都不可以,在网上搜索也没找到解决办法额。。。求助!! NHibernate session --------------------编程问答-------------------- NHibernateHelper 基本上封装的问题 --------------------编程问答-------------------- 这是这个类
 public sealed class NHibernateHelper
    {
        private const string CurrentSessionKey = "nhibernate.current_session";
        private static readonly ISessionFactory sessionFactory;

        static NHibernateHelper()
        {
            sessionFactory = new Configuration().Configure().BuildSessionFactory();
        }

        public static ISession GetCurrentSession()
        {
            HttpContext context = HttpContext.Current;
            ISession currentSession = context.Items[CurrentSessionKey] as ISession;

            if (currentSession == null)
            {
                currentSession = sessionFactory.OpenSession();
                context.Items[CurrentSessionKey] = currentSession;
            }

            return currentSession;
        }

        public static void CloseSession()
        {
            HttpContext context = HttpContext.Current;
            ISession currentSession = context.Items[CurrentSessionKey] as ISession;
            if (currentSession == null)
            {
                return;
            }
            currentSession.Close();
            context.Items.Remove(CurrentSessionKey);
        }

        public static void CloseSessionFactory()
        {
            if (sessionFactory != null)
            {
                sessionFactory.Close();
            }
        }
    } --------------------编程问答-------------------- .求助。。。。。。。。。。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,