2014-10-17 154 views
0

我在現有的數據庫中創建一個新列,讓我一個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); 

現在我想此列在

pubic bool RowModified(MyObject myObj) 

objFound = GetAllObjects.First(o=> o.ID = myObj.ID); 

If (objFound.ColumnName == myObj.ColumnName) 

傳遞的對象比較但價值從不相同?

在轉換時間戳閱讀幾個環節後,我曾嘗試過他們,但他們要麼沒有工作(可我很困惑,做了錯誤的),或者它沒有應用到我的方案。

欣賞這方面的任何幫助。

+0

http://stackoverflow.com/questions/4470807/sql-server-rowversion-timestamp-comparisons http://stackoverflow.com/questions/7713143/how-compare-cast-sql-rowversion-field-data-in-c-sharp – mss 2014-10-17 10:06:57

+0

你似乎有一些問題。你真正的問題是什麼? – 2014-10-17 10:18:26

+0

我試着去比較從我的隱藏字段傳遞來比較當前行版本值,看看數據是否已經改變,因此,加載頁面的價值。 @mss我確實讀過這個鏈接,但是爲了達到同樣的目的,似乎需要從我的結尾進行重大更改。林不知道,如果那裏有一個更簡單的方法作爲即時通訊不知道我怎麼會得到當我讓他們轉換成字符串字節值? – Computer 2014-10-17 10:49:09

回答

0

我不知道有關SQL rowversion格式什麼。似乎在評論中由mss提供的鏈接將幫助你,如果你關心的話。

但是,如果你所關心的是等於,那麼它應該足以比較兩個byte []對象。你的代碼的問題是數組不覆蓋Equals()或提供一個==超載。所以使用==只是比較兩個對象引用,它們總是相同的。

看到這個以前問的問題對於如何正確(和容易)比較兩個數組的細節: Easiest way to compare arrays in C#