难以理解的行为

时间:2018-11-20 13:58:24

标签: c# oracle nhibernate transactions

我正在使用nhibernate 4.4.0400连接到oracle DB的旧应用程序。

保存更新命令如下所示:

CallContext.Session.Save(obj);  // Save or update the data record on database
transaction.Commit();
obj.MutCounter++; 

交易创建如下:

  using (ITransaction transaction = CallContext.Session.BeginTransaction())
  {...

编辑: 方法调用的定义如下:

 public static void SaveOrUpdate(T obj)
    {
        if (obj == null)
            throw new ArgumentNullException("obj");

会话定义如下:

public static ISession Session
        {
            get
            {
                if (HttpContext.Current == null)
                    throw new MissingHttpContextException();

                if (HttpContext.Current.Items[HttpContextItemEnum.Session] == null)
                    HttpContext.Current.Items[HttpContextItemEnum.Session] = NHibernateHelper.OpenSession();

                return HttpContext.Current.Items[HttpContextItemEnum.Session] as ISession;
            }
            set
            {
                if (HttpContext.Current == null)
                    throw new MissingHttpContextException();

                HttpContext.Current.Items[HttpContextItemEnum.Session] = value;
            }
        }

在第一次调用时(单击UI中的第一次保存按钮),出现以下异常:

  

唯一约束(...)verletzt

     

无法将数据库状态与会话同步

但是,如果我紧接着第二秒(几秒钟)单击一次,数据将正确保存在数据库中。

我不知道哪里出了问题,为什么会出现这种行为,为了稳定而必须改变的东西

您知道要检查什么吗?要改变什么?为什么会这样呢?

0 个答案:

没有答案