0

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

 Property(t => t.Stamp).IsRequired().IsRowVersion();

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

 public BaseEntityConfiguration<T> : EntityTypeConfiguration<T> where T :B aseEntity

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

var baseMapConfiguration = new BaseEntityConfiguration<EntityA>();
           modelBuilder.Configurations.Add(baseMapConfiguration);
           var entityAMap = new EntityAMap(baseMapConfiguration);

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

    SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[LastModified] AS [LastModified], 
[Extent1].[CreatedDate] AS [CreatedDate], 
[Extent1].[Stamp] AS [Stamp]
FROM [dbo].[EntityA] AS [Extent1]

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

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

4

1 に答える 1