問題タブ [optimistic-concurrency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - ProstgreSQL、MySQL オプティミスティック コンカレンシー
ユーザーが同時にデータを変更できる Web アプリケーションがあります。現時点では、各フォームに古い行の値を含め、データが同じ場合にのみ行を更新しています。SQLite では、これが唯一のオプションです。これは醜いので、これを行うためのより良い方法が提供される場合は、別の SQL データベースに切り替えることを検討しています。PostgreSQL または MySQL には、代わりに使用できる暗黙的な行のタイムスタンプまたはバージョン番号がありますか?
asp.net-mvc-3 - Entity Framework Optimistic Concurrency 例外が発生しない
データ アクセス レイヤーとして EF4 を使用する ASP.Net MVC アプリケーションがあり、OptimisitcConcurrencyExceptions がスローされるはずのときにスローされないという予期しない動作が見られます。
問題を次のコードに単純化しました...
これは、MVC アプリで発生することのかなり単純なバージョンですが、同じ問題が発生します。
thirdEntities で SaveChanges を呼び出すと、例外が発生し、何もスローされません。
さらに興味深いことに、SQL プロファイラーをアタッチすると、where 句で Version が使用されていることがわかりますが、使用されているのは firstEntities の値ではなく、firstEntities のバージョン値 (DB 内の現在の値) であり、明示的にすぐに設定されているにもかかわらずです。 SaveChanges が呼び出される前。SaveChanges は、設定された値ではなく、取得された値になるようにバージョンをリセットしています。
EDMX では、バージョンは、StoreGeneratedPattern が Computed に設定されるように設定されています。
ここで何が起こっているのか誰にも分かりますか?
database - データベース トランザクションの設計に関する質問
オプティミスティック トランザクションを使用するシステムで、Java 疑似コードの次の 2 つのブロックを考えてみましょう。
例 A :
例 B
私たちのコードでは、トランザクションが双方向で実行されていることがわかります。私はAが正しいと確信しています。私の直感では、Bが間違っていることがわかりますが、Bは try ブロックにあり、エラーが発生した場合にキャッチしてロールバックできるため、Bに害はないようです。Bが正しいcommit()
かどうか、またその理由を説明してください。ありがとう!
編集:だから、私が探している答えが本当に得られていません。Bがどういうわけか「悪い」ことは既に知っています。私が探しているのは、B が悪い理由です。つまり、 Bが失敗する場所でAが機能する可能性のある状況はありますか?
-tjw
nhibernate - nHibernate と同時実行チェック
UnitOfWork パターンを使用して nHibernate 3 を使用して同時実行チェックを実現したいと考えています。
より正確には:
- 新しいセッション セッションを開く
- セッションでエンティティをロードし、
- クローズセッション、
- 読み込まれたエンティティのデータを編集する時間をユーザーに与えます。
- 新しいセッションを開き、
- データの更新
- セッションを閉じます。
エンティティのバージョンにタイムスタンプを使用しています。
ここに私のマッピングファイルがあります
セッションコンテキストでエンティティを更新する方法がわかりません
SQLでは、このように動作するはずです
ROWSMODIFIED = 1 の場合、更新は成功しました。それ以外の場合、= 0 の場合、ConcurrencyException
Linq2Sql を使用すると、非常に簡単でした。バージョン管理列を作成し、エンティティを新しいセッション コンテキストにアタッチして、更新を試みます。
nHiberate でそれを行うにはどうすればよいですか? サポートされていますか?
asp.net - UpdateItem() の使用時に Asp.Net ListView ItemUpdating が OldValues を設定しない
Listview.UpdateItem メソッドを使用して項目を更新しようとすると、ItemUpdating イベント引数の OldValues が設定されない理由がわかりません。
編集モードに入ってから「更新」コマンド ボタンをクリックするという通常の手順を使用すると、OldValues は常に設定されます。
UpdateItem メソッドを介して更新をトリガーしているため、同じようには機能しないようです...
EF と組み合わせて ConflictDetection="CompareAllValues" で ObjectDataSourde を使用していますが、変更されたフィールドのみを更新するために oldvalues も使用したいと考えています。
何が問題なのか分かりますか?
ありがとう
マルセロ
linq-to-sql - Linq to Sql: Change Conflict SQL Statement
When I catch a ChangeConflictException is it possible to determine the actual SQL statement that failed from within the code? ie; rather than inspecting profiler output.
database - タイムスタンプ順序付けプロトコルでトランザクションがロールバックされると、新しいタイムスタンプが与えられるのはなぜですか?
トランザクションがタイムスタンプ順序付けプロトコルでロールバックされると、新しいタイムスタンプが与えられるのはなぜですか? 古いタイムスタンプを保持しないのはなぜですか?
sql - レガシー データベースにオプティミスティック コンカレンシーを実装する
いくつかのテーブルとその中にデータを含むデータベースがあります。すべてのテーブルにオプティミスティック コンカレンシーを実装する必要があります。
どうするのが一番いいのか考えてみました。
述語を含むクエリは、アプリケーション側で作成されます。
私の懸念は、rowversion(timestamp) 値を格納する方法です。
最初は、rowversion 値にora_rowscnを使用することを考えていましたが、 ora_rowscnを設定するにはすべてのテーブルを再作成する必要があることに気付きました。ある種のタイムスタンプ列を追加するだけでもよいかもしれませんが、そうすると、アプリケーションの更新ごとに新しいタイムスタンプ値を作成して保存する必要があります。
何か案は ?
sql-server - NHibernate (および Fluent NH) を使用して、datetime 型のバージョン列を 1 秒未満の精度で (ミリ秒を切り捨てずに) マップする
datetime
バージョンとして -type 列を持つテーブルがあります。これはレガシー DB であるためdatetime2
、別のバージョン管理メカニズムに変更したり、使用したりすることはできません。NHibernate クラスは、これをDateTime
c# 型のプロパティにマッピングしています。
この問題に関するいくつかの質問とフォーラムの投稿と返信を見てきましたが、何を試しても、NHibernate は DateTime 値からミリ秒を切り捨て続けます。
Fluent NHibernate で現在行っていることは次のとおりです。
そして、マッピングされている私のクラスには、次のものがあります。
データベースは MS SQL 2008 で、Fluent NH は次のように構成されています。
必要なもの: Fluent NH を構成して NH が日時値をミリ秒単位で送信するようにする方法の実例 (コードで見たものから、10 ミリ秒の精度である必要があります)。ありがとう!
asp.net - Entity Framework でオブジェクトを削除するときの同時実行性
エンティティ フレームワークを使用して Web アプリを開発しています。オブジェクトのリストをロードし、それをリピーターにバインドして、すべてのアイテムの概要を表示します。ユーザーは、リピーター内の各アイテムの編集アイコンまたは削除アイコンをクリックできます。
例:
項目 1 | 編集 | 消去
項目 2 | 編集 | 消去
...
レコードが読み込まれ、ID および rowversion 列の値が非表示のフォーム フィールドに保持されるため、同時実行のために rowversion 列を使用する場合、編集は正常に機能します。これらの「元の」値は、後で更新を行うときに使用できます。
ただし、ユーザーがレコードの [削除] をクリックした場合は、データベースからオブジェクトを読み込み、DeleteObject() を呼び出してから、SaveChanges() を呼び出します。これに関する問題は、レコードをロードすると、最新の rowversion 値が取得されるため、同時実行チェックが役に立たなくなることです。
レコードを削除するときに同時実行チェックが確実に行われるようにするにはどうすればよいですか?