問題タブ [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.

0 投票する
0 に答える
110 参照

sql-server-2008 - rowversion 列の値はいつ更新されますか?

rowversion 列を持つテーブルがあり、次のように更新されるとします。

テーブル WITH(NOLOCK) に対してクエリを実行するとどうなりますか? クエリの結果が "Bob" (古い値) と "EFGH" (新しい行バージョン) になる可能性はありますか?

基本的に、私が求めているのは、rowversion が実際に更新されるのはいつですか? 他のすべての列が更新された後、rowversion 列が常に更新されるという保証はありますか?

0 投票する
0 に答える
42 参照

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 値を新しいエンティティに割り当てると、例外が回避されることです。これは正しいことですか?なんで?

0 投票する
0 に答える
167 参照

.net - MS-SQL で行バージョン チェックを無効にする方法

MS-SQL データベースで Entity Framework を使用しています。「応答セット」を更新するために PUT Web エンドポイントを実装しています。

呼び出し元が forceSave = true を示している場合、 RowVersionが一致しない場合でも、レコードを上書きしたいと考えています。

これは私のコードですが、動作しません....

ほとんどの場合、それは機能します!ただしDBConcurrencyExceptionSaveChanges(). 競合状態があるためだと思います。データベースを読み取った後、別のプロセスFirstOrDefaultでデータベースを書き込む前にSaveChanges、行が更新され、RowVersion が変更される可能性があります。RowVersion チェックを無効にする方法はありますか?

トランザクションの開始/終了を使用することを考えましたが、明らかにそれは役に立ちません。

DBConcurrencyException を取得した場合に、RowVersion を再度読み取り、再度書き込みを試行するようにループを作成することを考えました...成功するまで...しかし、ハッキーな感じがします。

0 投票する
0 に答える
229 参照

c# - 削除して再挿入した後、行のバージョンが一致しません

rowversion column を持つテーブルがあります。

以下のクエリでデータを取得しています

データをフェッチした後、rowversion に基づいて以下のクエリを使用してステータスを更新します

選択ストア プロシージャを呼び出すための C# コード

更新ストアド プロシージャ Update_Events を呼び出すための C# コード

しかし、更新は初めてのことです。行を削除して再度挿入すると、上記のストアド プロシージャ (Select & Updation) を実行すると、rowversion が DB 値 rowVersion と一致しないため、ステータスを更新できません。

Entity Framework オブジェクト コンテキスト ExecuteFunction を使用して、更新ストアド プロシージャを実行しています。

エンティティをドメイン モデルにマップするために使用する EF または自動マッパーに問題があるかどうかはわかりません。

誰かが問題を特定するのを手伝ってくれたら幸いです?.

さらに情報が必要な場合は、お知らせください。

0 投票する
1 に答える
112 参照

entity-framework - EF 4.1.3 同時実行のための Rowversion の実装が機能しない

すべてのエンティティが継承するスタンプ、ID、および状態と呼ばれるバイト配列を含む BaseEntity クラスを取得しました。スタンプをマッピングしています

これは、このように設定されている BaseEntityConfiguration に設定されています

マッピングはこのように行われます

データベースにスタンプ ROWVERSION NOT NULL があります。テーブルEntityAにDbUpdateConcurrencyExceptionを処理するコードがありますが、スタンプが異なっていてもこれはキャッチされませんまた、私が期待していたスタンプフィールドに関するwhere句はありません

whereステートメントが表示されていないので、通常のマッピング設定で試してみましたが、それでも同じ結果が得られます

**EF が渡されたものではなく最新の Rowversion を取得しているという問題が見つかりました。これを停止するにはどうすればよいですか。**

0 投票する
0 に答える
142 参照

sql-server - 一部のフィールドのみに対して SQL Server の行バージョンの動作をレプリケートする方法

SQL Server バージョン 10.50.4000。

私はテーブルを持っています:

次の点を除いて、 rowversion フィールドとまったく同じように機能するフィールドを追加したいと考えています。

  1. last_visited が変更された場合にのみ更新する必要があります。
  2. データベースで一意である必要はありませんが、テーブルで一意である必要があります。

これどうやってするの?

0 投票する
1 に答える
1467 参照

sql - タイムスタンプ列の LIKE 演算子、SQL Server

LIKEタイムスタンプ (rowversion) データ型を持つ列で演算子を使用するにはどうすればよいですか?

以下は私が試したクエリですが、うまくいきませんでした。

また、タイムスタンプ値で一重引用符を使用することはできません。

LIKE演算子を使用して行のバージョン管理のパターンを見つけたいと思います。を使用CASTすると、パターンが見つかりません。

何か案が ?

ありがとう、