2011-08-09 22 views
1

當我閱讀時,ObjectContext.saveChange()引發了樂觀併發異常,如果數據庫中存在字段類型的時間戳,在實體框架設計器中標記爲固定併發生衝突。 這並不爲我工作:/我在比較硬編碼的時間戳上升例外:樂觀的併發性和linq的實體?

public void SaveChanges(TEntity entity, Byte[] oldTimestamp, Byte[] newTimestamp) 
    { 
     int i=0; 
     try 
     { 
      foreach (byte b in oldTimestamp) 
      { 
       if(!b.Equals(newTimestamp[i++])) throw new OptimisticConcurrencyException(); 
      } 

      SaveChanges(); 

     } 
     catch (OptimisticConcurrencyException oce) 
     { 
      Refresh(entity); 
      throw oce; 
     } 
    } 

我不認爲我在做什麼是一個乾淨的代碼,雖然是例外現在提出。

回答

0

你正在做的事實際上是正確的。如果您在應用程序中同時擁有舊時間戳和新時間戳,則不需要執行數據庫往返以解決併發問題,是嗎?爲什麼它不在數據庫中很難說,因爲你沒有提供足夠的細節,但可能this will explain you something