1

Entity Framework を使用しており、同時実行に使用するテーブルに rowversion (タイムスタンプ) フィールドがあります。ただし、エンティティ オブジェクトを更新するときに、rowversion 列を null に設定しようとし続け、エラーが発生します。

「LmpDemoRequest」の「VerCol」プロパティを「null」値に設定できませんでした。このプロパティを 'Byte[]' 型の null 以外の値に設定する必要があります。

エンティティ定義内に VerCol 列がありますが、"Setter" 関数を削除できません。

エンティティ フレームワークがこの列を設定しようとするのをやめるにはどうすればよいですか?

4

2 に答える 2

4

RowVersion フィールドには任意の有効な値を渡すことができます (DateTime.Now など)。サーバーが生成した値で上書きされます。

EF の将来のリリースでは、モデルには存在するがクラスには存在しない "シャドウ プロパティ" がサポートされるはずです。この機能は、このような状況で役立ちます。

于 2009-04-07T14:18:40.743 に答える
0

ビューに結合されたままのテーブルのRowVersion列がビューに含まれている場合がありました。そのため、列がnullになることがありました。

しかし、EF4は、RowVersion列をnullにすることはできないことを認識しているため、単純なLINQクエリでも、InvalidOperationExceptionをスローしていました。

'vVoteInfo'の'PersonRowVersion'プロパティを'DBNull'値に設定できませんでした。このプロパティは、タイプ'Byte[]'のnull以外の値に設定する必要があります

EFが満足できるように、最終的にこれをRowVersion列に使用するようにビューを変更する必要がありました。

coalesce(p._RowVersion, cast(0 as binary(6))) [PersonRowVersion]
于 2011-12-11T12:15:00.023 に答える