为什么EF核心中的[Timestamp]列由byte []列而不是UInt64支持

时间:2018-07-05 07:49:45

标签: c# sql-server entity-framework ef-core-2.0

在Entity Framework中使用时间戳列时,它由SQL Server中的some_event..列类型支持,并表示为CLR的rowversion(根据docs)。该列的长度为8个字节。

为什么他们决定使用byte[]而不是byte[]?它将保持该值就好。使用byte []是否有任何明显的好处,还是仅将EF与其他DB引擎一起使用,EF可以在内部将类似rowversion的列实现为不同的数据类型。

1 个答案:

答案 0 :(得分:4)

rowversion / timestamp字段的用途是每次更新时,它都是一个新的唯一值。在某些实现中,它是一个“时间戳”是不相关的。

根据this page,对于MS-SQL,它是一个递增的数字,根据this page,对于MySql,它是一个时间戳。

因此,“字节”数组是最有意义的兼容性选择。