c# - 如何从 SQLDataReader 读取行版本或时间戳 SQL Server 数据类型到 C# 变量

标签 c# sql-server ado.net

我有一个 SQL Server 2012 数据库。每个表都有一组审计字段。一个是名为 RowVer 的列,其数据类型为 timestamp(与 rowversion 相同)。

我很难将 SqlDataReader 中的值读取到 C# 对象中,该对象的属性名为 User.RowVersion,数据类型为 Byte[].

while (rdr.Read()) block 的代码片段

...
user.DateCreated = rdr.GetDateTime(14);
user.CreatedByUserId = rdr.GetInt32(15);
if (!rdr.IsDBNull(16)) { user.DateLastUpdated = rdr.GetDateTime(16); }
if (!rdr.IsDBNull(17)) { user.LastUpdatedByUserId = rdr.GetInt32(17); }
user.RowVersion = rdr.???;
...

RowVersion 值仅用作更新数据库时并发性的比较。

这当然不是 EF 实现。

最佳答案

如果您使用的是 .NET 4.5 或更新版本,您可以这样做

user.RowVersion = rdr.GetFieldValue<byte[]>(18);

如果您使用的是 4.0 或更早版本,则需要执行强制转换。

user.RowVersion = rdr.GetValue(18) as byte[];

关于c# - 如何从 SQLDataReader 读取行版本或时间戳 SQL Server 数据类型到 C# 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33004548/

相关文章:

sql - 在 SQL Server Management Studio 中编辑表后保存更改

sql - 从 SQL 结果中删除周末

c# - 在读取和写入 XML 之间对 DataSet 进行排序

c# - 在 ExecuteReader() 中使用 CommandBehavior.CloseConnection 的用途/优势是什么

c# - HTTP POST 方法在 WebApi 上被视为 GET

c# - 分析和比较类似功能逻辑的工具?

sql - Azure 数据仓库中的表变量

entity-framework - System.Drawing.Image EntityType 'Image' 没有定义键。定义此 EntityType 的键

c# - 我需要从具有固定字段长度的数据库表创建一个平面文件

c# - Tesseract Init() 方法 C3