一意としてマークされたプロパティを持つ同じタイプのオブジェクトのいくつかの同時挿入を実行する可能性のあるマルチスレッドアプリケーションがあります。
public class Foo(){
...
string PropertyThatshouldBeUnique {get;set;}
...
}
各スレッドには独自のセッションがあり、次のことを行います。
Foo myFooInstance = new Foo();
myFooInstance.PropertyThatshouldBeUnique = "Bar";
myThreadSession.SaveOrUpadte(myFooInstance);
- データベーステーブルに一意の制約があり、複数の挿入を防止しているため、トランザクション全体のロールバックをトリガーする2番目の挿入で例外が発生します(これは適切ではありません)
- 同時挿入は非常に近くなる可能性があります(数ミリ秒)
- 特定のNhibernate同時実行戦略を構成していません(これで問題が解決するかどうか、またはどちらを使用するかはわかりません)
私の問題は:
コードのどこで、同じプロパティ値を持つ以前に挿入されたFooオブジェクトを確認する必要がありますか?