質問

ASP.NET MVCアプリケーション のエンティティフレームワークとの並行性の処理

記事は言う:

部門エンティティへの追跡プロパティの追加

モデル\ department.cs、追跡プロパティを追加する:

[Timestamp] 
public Byte[] Timestamp { get; set; }
.

timestamp属性は、この列がデータベースに送信された更新コマンドと削除コマンドのWHERE句に含まれることを指定します。

私はモデルの最初のアプローチを使っているので、エンティティフレームワークを使用したタイムスタンプ列の作成

  1. EFのモデルのエンティティに "timestamp"という名前のプロパティを追加します。
  2. タイプをバイナリに設定します
  3. false にnullableを設定します
  4. 計算済みにStoreGeneratedPatternを設定します。
  5. concurrencyModeを固定に設定します。

    データベースモデルからコードを更新すると、Models \ Department.csにが含まれています

        public virtual byte[] Timestamp
        {
            get;
            set;
        }
    
    .

    その後、Metadataクラスを使用してTIMESTAMP属性を指定しました:

    // Metadata for Department entity
    public class DepartmentMetadata
    {
        [Timestamp]
        public byte Timestamp { get; set; }
    }
    
    .

    q1。私は行編集の場合にTimestamp列の値が変化しているかどうかをテストしました。そうではありません。

    編集1 SQL Server列の種類がbinaryであるため、timestampの型があるはずです。データ型の変更[タイムスタンプ]列の問題が更新されていません。

    q2。私は、OptimisticConcurrencyExceptionがスローされているかどうかを確認するために、同じエンティティを変更しようとしていました([新しいタブで開く]を使用して)。そうではありません。私は何が悪いのですか?理解してください、ありがとうございました。

    My <code> timestamp </ code>プロパティ のスクリーンショット

役に立ちましたか?

解決

HTTPセッションごとに1つのObjectContextを持っていたため、新しいタブを開くとテストをテストしているため、ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top