1

ストレージ モデルで SQL Server の rowversion フィールドを宣言し、Entity Framework で既定のマッピングを行うと、rowversion フィールドがバイト配列にマップされます。

それをより使いやすい型にマップすることは可能ですか (これにより、.NET 側から等値演算子と比較演算子を表現できるようになります)? rowversion の基になる型が binary(8) であることを考えると、それを 64 ビット整数にマップできる可能性があると思います。

現在使用されているプロパティ定義は次のとおりです。

SSDL:

<Property Name="lastModifiedRowVersion" Type="timestamp" Nullable="false" StoreGeneratedPattern="Computed" />

CSDL:

<Property Name="LastModifiedRowVersion" Type="Binary" FixedLength="true" MaxLength="8" Nullable="false" ConcurrencyMode="Fixed" />
4

2 に答える 2

1

残念ながら、EF にはいかなる種類のデータ変換機能もないため、これは不可能です。64 ビット整数を使用する場合でも、バイト配列をマップし、配列を整数に変換する 2 番目のマップされていないプロパティを公開する必要があります。ここでは、アプリケーションでのタイムスタンプの比較についてさらに説明します。

于 2011-11-07T09:46:11.797 に答える
0

これには計算列を使用します。これISNULLは、EF POCO がlongではなくになることを意味しNullable<long>ます。

...
Revision                ROWVERSION,
Revision64              AS ISNULL(CAST(Revision AS BIGINT), 0),
...
于 2015-10-05T11:03:44.780 に答える