私たちは、車両に発生した障害のXMLファイルを認識するWebサービスを持っています。 Webサービスは、EF 3.5を使用して、これらのファイルをハイパー正規化データベースにロードします。通常、XMLファイルは10〜20秒で処理されます。Entity Framework 3.5で並行処理をロックするためのテーブルをロックする
異なるXMLファイルを同時に送信する車両は、問題ではありません。 EFのデフォルトのオプティミスティック並行性により、これらのファイルをすべて同じデータに格納することができます。
同じ車両が複数のファイルを同時に送信する:これは、システムが同じデータまたは類似のデータを同時にデータベースに書き込もうとするため、問題を引き起こします。そして、これはまれなことではありません。
私たちは、私はロックテーブルを導入し、これを解決するには、ポイント2
のためのソリューションを必要としていました。基本的には、私はDBへの書き込みを開始し、私が完了したレコードを削除すると、このテーブルに連結された車両idとフォルトタイムスタンプ(同じフォルトのために車両が送信した複数のファイルについて同じです)を挿入します。ただし、両方のファイルが同時にこの行をデータベースに挿入しようとすると、多くの場合があります。このような場合、一方のファイルは成功し、もう一方のファイルは重複したキー例外をスローし、Webサービスの呼び出し元に送られます。
このようなシナリオを処理するには、どのような方法が最適ですか? 1つのファイルに対して多くのテーブルが関わっているので、dbから何かをロールバックしたくないです。
私たちはメッセージキューと一緒に行くことができないので、@Ladislavのようにロックテーブルだけが言及されていれば、最良の選択肢と思います。 – Yasir