【发布时间】:2014-12-12 20:53:12
【问题描述】:
我在现有数据库中创建了一个新列,以允许我使用 RowVersion 进行并发操作:
alter table MyTable add ColumnName rowversion
在我的课堂上,我添加了以下属性
public byte[] ColumnName { get; set; }
在使用此类的一种方法中,使用此属性时出现错误
无法将类型 'System.Data.Linq.Binary' 隐式转换为 'byte[]'
我通过将 ToArray (myObj.ColumnName.ToArray()) 添加到属性来克服这个问题。
在我的 ASP .Net 页面中,我将隐藏控件添加到中继器并将值分配为
RowHiddenField.Value = Convert.ToBase64String(myObj.ColumnName);
现在我正在尝试将此列与传入的对象进行比较
public bool RowModified(MyObject myObj)
objFound = GetAllObjects.First(o=> o.ID = myObj.ID);
If (objFound.ColumnName == myObj.ColumnName)
但值永远不会相同?
在阅读了一些转换时间戳的链接后,我尝试了它们,但要么它们不起作用(可能是我感到困惑并且做错了什么),要么它不适用于我的场景。
感谢您对此的任何帮助。
【问题讨论】:
-
你似乎有很多问题。你的实际问题是什么?
-
我正在尝试比较从我的隐藏字段传递的值以与当前行版本值进行比较,以查看自页面加载以来数据是否已更改。 @mss 我确实阅读了该链接,但我似乎需要进行重大更改才能实现相同的目的。我不确定是否有更简单的方法,因为我不确定将字节值转换为字符串后如何获取它们?
标签: c# sql-server-2008 linq-to-sql concurrency