0

DevExpress に基づいて継承したアプリケーション (Winforms) では、タイプ UnitOfWork のオブジェクトを使用して、データベース内の複数のレコードを追跡および保存します。通常、UnitOfWork.CommitChanges() メソッドを使用してボタンをクリックすると、約 100 個のオブジェクトをデータベースに保存できます。レコードが挿入されるテーブルには、列に一意の制約があります。異なるユーザーが同じエンティティを処理しようとして、そのテーブルの一意の列に同じ値を入力しようとする場合があります。したがって、UnitOfWork.CommitChanges() を使用する前に、1 つ以上の値がデータベースにまだ存在しないかどうかをテストする必要があります。UnitOfWork.CommitChanges() を呼び出す前に、1 つ以上のオブジェクトがまだデータベースにないかどうかをテストして、ユーザーの検証について確実に警告できるようにするための最良の方法は何でしょうか?

ありがとうございました

4

2 に答える 2

0

あなたが求めている機能は、マルチユーザー システムでは実装できません。すべてのユーザーは (必然的に) 自分のデータベース トランザクションで作業するため、別のユーザーが直前に挿入したキーを使用してデータ行を挿入する可能性は常にあります。これを回避するには、自動生成キーなどのデータベース メカニズムを採用する必要があります。しかし、これはあなたには当てはまらないと思います。

そのため、commitChanges によってスローされた例外をキャッチして、それに対処することをお勧めします。

于 2013-07-16T15:43:26.577 に答える