2011-06-21 8 views
0

これはなぜ機能していないのですか? 私はいくつかのメソッドを持つWebサービスを持っています。それらのうちの1つはエンティティの要素を返し、もう1つは同じエンティティの要素を期待し、クライアント側で行われた変更でコンテキストとデータベースを更新するはずです。私はこの作業を取得するためにいくつかのアプローチを試みたOracle Link - Webサービス経由で送信されたエンティティ要素の更新

public InvoiceHeader getHeader(long pIdHeader){ 
    try{ 
    InvoiceHeader ih = lContext.InvoiceHeaders.SingleOrDefault(x => x.idHeader == pIdHeader); 
    return ih; 
    } catch (Exception exp){ 
    //log error 
    } 
} 

を次のように

「取得」コードです。ここで私は答えに最も近いと思うものは、次のとおりです。■ (1):

public bool submitChanges(InvoiceHeader iHeader){ 
    try{ 
    InvoiceHeader ih = getHeader(iHeader.idHeader); 
    lContext.InvoiceHeaders.Context.Refresh(RefreshMode.KeepChanges, iHeader); 
    lContext.SubmitChanges(); 

    return true; 
    } catch (Exception exp) { 
    //log error 
    return false; 
    } 
} 

他のアプローチは た両方のケースでは(2)

public bool submitChanges(InvoiceHeader iHeader){ 
    try{ 
    lContext.InvoiceHeaders.Attach(iHeader, true); 
    lContext.SubmitChanges(); 

    return true; 
    } catch (Exception exp) { 
    //log error 
    return false; 
    } 
} 

すべてが復帰」するには、[OK]走りましたtrue "が更新されませんでした。ここで何が間違っているのかアドバイスしてください。 さらに詳しい情報が必要な場合は、お知らせください。 ありがとうございました リカルド。

答えて

0

解決済み。 コンテキストのコントロールからエンティティを取得すると、エンティティをコンテキストに添付しても、エンティティを制御できなくなります。ただし、バージョンフィールドがある場合を除きます。 これを有効にするには、

=>エンティティにバージョンフィールドを追加します。

1)空白可能]チェックボックス

2をご確認ください)は、バージョンのチェックボックスです

3)アップデートチェック=決して

4)自動同期常に;

何とかバージョンを処理する必要があります。恐らく、更新トリガーです。 コード:

1)コンテキストの新しいインスタンスを作成します。

2)は本当に私のエンティティのバージョンフィールドがある前に、私はすでにしようとしたものに変更

DataContext lContext = new DataContext(); 
lContext.InvoiceHeaders.Attach(iHeader, true); 
lContext.SubmitChanges(); 

GREAT BIG違いを提出する)ことが を変更されたLINQを言って、オブジェクトを添付してください。

関連する問題