我有一个 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/