我正在使用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
无法将数据库状态与会话同步
但是,如果我紧接着第二秒(几秒钟)单击一次,数据将正确保存在数据库中。
我不知道哪里出了问题,为什么会出现这种行为,为了稳定而必须改变的东西
您知道要检查什么吗?要改变什么?为什么会这样呢?