gpt4 book ai didi

c# - 竞争条件使 nHibernate 创建重复条目

转载 作者:行者123 更新时间:2023-11-30 17:53:16 25 4
gpt4 key购买 nike

我在 nHibernate 上有一个竞争条件,它在我的数据库中创建了重复的条目。不幸的是,我无法在数据库上创建 UNIQUE 索引,因此我想仅使用 nHibernate 方法来解决此错误。它是一个可能在网络农场上运行的网络应用程序(因此我想系统锁也不应该解决问题)。简化的情况如下:

var current = UnitOfWorkManager.Instance.Current;
current.BeginTransaction(IsolationLevel.Serializable);
try {

var myEntity = MyFactory.MyEntityRepository.GetBy(product, company);
// race condition happens between the previous statement and Save() method.

if (myEntity == null)
{
myEntity = new MyEntity();
myEntity.Product = product;
myEntity.Company = company;
myEntity.Date = date;
myEntity.CurrentUser = currentUser;
myEntity.IsManual = true;
myEntity.Save();
}
else
{
myEntity.IsManual = false;
myEntity.Save();
}
current.CommitTransaction();
}
catch {
current.RollbackTransaction();
throw;
}

我是 nHibernate 的新手,所以我可能在这里缺少一些基础知识。我将不胜感激任何反馈。 :)

最佳答案

阅读 nHibernate 手册后,我认为您的问题可能是您第二次调用 save 如果 subProjectToSupplier 不为空。因为 nHibernate 手册说“保存”会插入。

尝试保存或更新

关于c# - 竞争条件使 nHibernate 创建重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17543975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com