1

当我在存储模型中声明一个 SQL Server 行版本字段并让实体框架进行其默认映射时,行版本字段被映射到一个字节数组。

是否可以将其映射到更友好的类型(这将允许从 .NET 端表达相等和比较运算符)?鉴于 rowversion 的底层类型是 binary(8),我相信可以将其映射到 64 位整数。

以下是当前使用的属性定义:

固态硬盘:

<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 位整数,则仍必须映射字节数组并公开第二个非映射属性,将数组转换为整数。在这里,您可以了解更多关于在应用程序中比较时间戳的信息。

于 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 回答