我在现有数据库中创建了一个新列,允许我使用RowVersion进行并发操作:
alter table MyTable add ColumnName rowversion
在我班上我添加了以下属性
public byte[] ColumnName { get; set; }
在使用此类的一个方法中,使用此属性时会出现错误
无法隐式转换类型&System; System.Data.Linq.Binary'到' byte []'
我通过向物业添加ToArray (myObj.ColumnName.ToArray())
来克服这一点。
在我的ASP .Net页面中,我向Repeater添加了一个隐藏控件,并将值指定为
RowHiddenField.Value = Convert.ToBase64String(myObj.ColumnName);
现在我正在尝试将此列与
中传递的对象进行比较public bool RowModified(MyObject myObj)
objFound = GetAllObjects.First(o=> o.ID = myObj.ID);
If (objFound.ColumnName == myObj.ColumnName)
但价值观永远不变?
在阅读转换TimeStamp的几个链接后,我尝试了它们,但要么它们没有工作(可能是我感到困惑并做错了什么),或者它不适用于我的场景。
感谢您的任何帮助。
答案 0 :(得分:0)
我对SQL rowversion格式一无所知。似乎mss在评论中提供的链接将帮助您,如果您关心它。
但是如果你关心的只是相等,那么仅仅比较两个byte []对象就足够了。您的代码的问题是数组不会覆盖Equals()或提供==重载。所以使用==只比较两个对象引用,它们总是相同的。
有关如何正确(和轻松)比较两个数组的详细信息,请参阅此前提出的问题: Easiest way to compare arrays in C#