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

Why is [Timestamp] column in EF core backed by byte[] column instead of UInt64

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

为什么他们决定使用 byte[] 而不是 UInt64?它会很好地保持价值。使用 byte[] 是否有任何不明显的好处,或者它只是为了将 EF 与其他数据库引擎一起使用,它可以在内部将类似 rowversion 的列实现为不同的数据类型。

rowversion/timestamp字段的作用是每次更新都是一个新的唯一值。对于某些实现,它是 'timestamp' 这一事实是无关紧要的。

根据 this page, for MS-SQL it is an incrementing number, according to this page,对于 MySql,它是一个时间戳。

因此,'bytes' 的数组在兼容性方面最有意义。