問題タブ [rowversion]
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-server-2008 - rowversion 列の値はいつ更新されますか?
rowversion 列を持つテーブルがあり、次のように更新されるとします。
テーブル WITH(NOLOCK) に対してクエリを実行するとどうなりますか? クエリの結果が "Bob" (古い値) と "EFGH" (新しい行バージョン) になる可能性はありますか?
基本的に、私が求めているのは、rowversion が実際に更新されるのはいつですか? 他のすべての列が更新された後、rowversion 列が常に更新されるという保証はありますか?
c# - null の rowversion メンバーが DataContext.Attach() を壊すのはなぜですか?
この質問が「重複」としてマークされていることに注意してください: Linq の行が見つからないか変更されたという質問とは異なり、私の質問は、「行が見つからないか変更されました」というメッセージをトリガーする特定のシナリオに関するものであり、その解決策を探しています。
さらに、私のシナリオはそこで提案された「最小作業単位」プリンシパルを既に実装しているため、その質問への回答は私の質問には役に立ちません。
私の Web サービスでは、次のように、クライアント アプリケーションから入ってくる LINQ to SQL エンティティを DataContext にアタッチしようとしています。
LINQ to SQL でこれを行うための前提条件は、MyEntity が DB テーブルの ROWVERSION 列にマップされたプロパティを持つことです。私の場合、このプロパティを RowVersion と呼びました。
クライアントから入ってくる MyEntity のインスタンスで RowVersion が null に設定されている場合、次のように呼び出しcontext.SubmitChanges()
ますSystem.Data.Linq.ChangeConflictException
。
行が見つからないか、変更されています。
クライアント アプリケーションが RowVersion の値を変更しているにもかかわらず、これが発生しないようにするにはどうすればよいですか?
私が気づいたことの 1 つは、コンテキストから「古い」エンティティを取得し、その RowVersion 値を新しいエンティティに割り当てると、例外が回避されることです。これは正しいことですか?なんで?
.net - MS-SQL で行バージョン チェックを無効にする方法
MS-SQL データベースで Entity Framework を使用しています。「応答セット」を更新するために PUT Web エンドポイントを実装しています。
呼び出し元が forceSave = true を示している場合、 RowVersionが一致しない場合でも、レコードを上書きしたいと考えています。
これは私のコードですが、動作しません....
ほとんどの場合、それは機能します!ただしDBConcurrencyException
、SaveChanges()
. 競合状態があるためだと思います。データベースを読み取った後、別のプロセスFirstOrDefault
でデータベースを書き込む前にSaveChanges
、行が更新され、RowVersion が変更される可能性があります。RowVersion チェックを無効にする方法はありますか?
トランザクションの開始/終了を使用することを考えましたが、明らかにそれは役に立ちません。
DBConcurrencyException を取得した場合に、RowVersion を再度読み取り、再度書き込みを試行するようにループを作成することを考えました...成功するまで...しかし、ハッキーな感じがします。
c# - 削除して再挿入した後、行のバージョンが一致しません
rowversion column を持つテーブルがあります。
以下のクエリでデータを取得しています
データをフェッチした後、rowversion に基づいて以下のクエリを使用してステータスを更新します
選択ストア プロシージャを呼び出すための C# コード
更新ストアド プロシージャ Update_Events を呼び出すための C# コード
しかし、更新は初めてのことです。行を削除して再度挿入すると、上記のストアド プロシージャ (Select & Updation) を実行すると、rowversion が DB 値 rowVersion と一致しないため、ステータスを更新できません。
Entity Framework オブジェクト コンテキスト ExecuteFunction を使用して、更新ストアド プロシージャを実行しています。
エンティティをドメイン モデルにマップするために使用する EF または自動マッパーに問題があるかどうかはわかりません。
誰かが問題を特定するのを手伝ってくれたら幸いです?.
さらに情報が必要な場合は、お知らせください。
entity-framework - EF 4.1.3 同時実行のための Rowversion の実装が機能しない
すべてのエンティティが継承するスタンプ、ID、および状態と呼ばれるバイト配列を含む BaseEntity クラスを取得しました。スタンプをマッピングしています
これは、このように設定されている BaseEntityConfiguration に設定されています
マッピングはこのように行われます
データベースにスタンプ ROWVERSION NOT NULL があります。テーブルEntityAにDbUpdateConcurrencyExceptionを処理するコードがありますが、スタンプが異なっていてもこれはキャッチされませんまた、私が期待していたスタンプフィールドに関するwhere句はありません
whereステートメントが表示されていないので、通常のマッピング設定で試してみましたが、それでも同じ結果が得られます
**EF が渡されたものではなく最新の Rowversion を取得しているという問題が見つかりました。これを停止するにはどうすればよいですか。**
sql-server - 一部のフィールドのみに対して SQL Server の行バージョンの動作をレプリケートする方法
SQL Server バージョン 10.50.4000。
私はテーブルを持っています:
次の点を除いて、 rowversion フィールドとまったく同じように機能するフィールドを追加したいと考えています。
- last_visited が変更された場合にのみ更新する必要があります。
- データベースで一意である必要はありませんが、テーブルで一意である必要があります。
これどうやってするの?
sql - タイムスタンプ列の LIKE 演算子、SQL Server
LIKE
タイムスタンプ (rowversion) データ型を持つ列で演算子を使用するにはどうすればよいですか?
以下は私が試したクエリですが、うまくいきませんでした。
また、タイムスタンプ値で一重引用符を使用することはできません。
LIKE
演算子を使用して行のバージョン管理のパターンを見つけたいと思います。を使用CAST
すると、パターンが見つかりません。
何か案が ?
ありがとう、