2011-08-09 10 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だからといって言うことは難しいです。

関連する問題