我有一个多线程应用程序,它可能会同时插入一些具有标记为唯一属性的相同类型对象。
public class Foo(){
...
string PropertyThatshouldBeUnique {get;set;}
...
}
每个线程都有自己的会话并执行以下操作:
Foo myFooInstance = new Foo();
myFooInstance.PropertyThatshouldBeUnique = "Bar";
myThreadSession.SaveOrUpadte(myFooInstance);
- 我的数据库表有一个独特的约束,可以防止多次插入,因此我在第二次插入时遇到异常,触发整个事务的回滚(这不好)
- 并发插入可能非常接近(几毫秒)
- 我没有配置任何特定的Nhibernate 并发策略(不确定这是否可以解决我的问题或使用哪一个)
我的问题是:
我应该如何以及在代码中的何处检查先前插入的具有相同属性值的 Foo 对象?