Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否可以映射SQL Server';是否使用实体框架将行版本类型设置为比byte[]更友好的类型?_Sql Server_Entity Framework_Orm_Rowversion - Fatal编程技术网

Sql server 是否可以映射SQL Server';是否使用实体框架将行版本类型设置为比byte[]更友好的类型?

Sql server 是否可以映射SQL Server';是否使用实体框架将行版本类型设置为比byte[]更友好的类型?,sql-server,entity-framework,orm,rowversion,Sql Server,Entity Framework,Orm,Rowversion,当我在存储模型中声明SQL Server rowversion字段并让Entity Framework执行其默认映射时,rowversion字段映射到字节数组 是否可以将其映射到更友好的类型(允许从.NET端表达相等运算符和比较运算符)?鉴于rowversion的底层类型是二进制(8),我认为可以将其映射为64位整数 以下是当前使用的特性定义: SSDL: CSDL: 不幸的是,这是不可能的,因为EF没有任何类型的数据转换功能。若要使用64位整数,则仍必须映射字节数组并公开第二个将数组转换

当我在存储模型中声明SQL Server rowversion字段并让Entity Framework执行其默认映射时,rowversion字段映射到字节数组

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

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

SSDL:


CSDL:



不幸的是,这是不可能的,因为EF没有任何类型的数据转换功能。若要使用64位整数,则仍必须映射字节数组并公开第二个将数组转换为整数的未映射属性。您可以在应用程序中比较时间戳。

不幸的是,这是不可能的,因为EF没有任何类型的数据转换功能。若要使用64位整数,则仍必须映射字节数组并公开第二个将数组转换为整数的未映射属性。关于在应用程序中比较时间戳,您有更多的了解。

我使用计算列来进行比较。
ISNULL
表示EF POCO将是
long
而不是
null


我使用一个计算列来进行此操作。
ISNULL
表示EF POCO将是
long
而不是
null

<Property Name="lastModifiedRowVersion" Type="timestamp" Nullable="false" StoreGeneratedPattern="Computed" />
<Property Name="LastModifiedRowVersion" Type="Binary" FixedLength="true" MaxLength="8" Nullable="false" ConcurrencyMode="Fixed" />
...
Revision                ROWVERSION,
Revision64              AS ISNULL(CAST(Revision AS BIGINT), 0),
...