【发布时间】:2018-06-04 22:41:19
【问题描述】:
我的数据库中有一个时间戳列,用作行版本。在从数据库中提取数据时,我们也得到了 rowversion,我将其转换为 byte[]。到此阶段为止,一切都按预期进行。
在更新数据时,我想(在存储过程中)检查 rowversion 是否相同,即将从代码传递的版本与存储在数据库中的版本进行比较。如果不同,我会中止更新,否则会更新数据。
现在我的问题是,如何将 byte[] 传递给存储过程。存储过程中的参数类型是timestamp。
注意:我使用企业库在 c# 中进行所有数据库操作。我无法更改存储过程或数据类型。受到限制。
【问题讨论】:
-
你的字节时间戳格式是什么?或者,时间戳是如何成为 byte[] 的?也许是this?
-
不推荐使用时间戳语法。此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 docs.microsoft.com/en-us/sql/t-sql/data-types/…
-
@john 我得到数据行,我从中将 row_version 转换为字节数组,如下所示: dr["row_version"] == DBNull.Value ?新字节[1] : (byte[])dr["row_version"];
标签: c# sql arrays timestamp enterprise-library