次の方法で共有


ChangeOperationResponse クラス

DataServiceResponse クラスから返された操作応答を列挙するときに、SaveChanges の呼び出しの後に返される結果。

継承階層

System.Object
  System.Data.Services.Client.OperationResponse
    System.Data.Services.Client.ChangeOperationResponse

名前空間:  System.Data.Services.Client
アセンブリ:  Microsoft.Data.Services.Client (Microsoft.Data.Services.Client.dll)

構文

'宣言
Public NotInheritable Class ChangeOperationResponse _
    Inherits OperationResponse
'使用
Dim instance As ChangeOperationResponse
public sealed class ChangeOperationResponse : OperationResponse
public ref class ChangeOperationResponse sealed : public OperationResponse
[<SealedAttribute>]
type ChangeOperationResponse =  
    class
        inherit OperationResponse
    end
public final class ChangeOperationResponse extends OperationResponse

ChangeOperationResponse 型は、以下のメンバーを公開しています。

プロパティ

  名前 説明
パブリック プロパティ Descriptor 変更操作で変更された EntityDescriptor または LinkDescriptor を取得します。
パブリック プロパティ Error 操作でスローされたエラーを取得します。 (OperationResponse から継承されています。)
パブリック プロパティ Headers 派生クラスでオーバーライドされた場合、単一の操作に関連付けられている HTTP 応答ヘッダーが含まれます。 (OperationResponse から継承されています。)
パブリック プロパティ StatusCode 派生クラスでオーバーライドされた場合、単一の操作に関連付けられている HTTP 応答コードを取得または設定します。 (OperationResponse から継承されています。)

先頭に戻る

メソッド

  名前 説明
パブリック メソッド Equals (Object から継承されています。)
プロテクト メソッド Finalize (Object から継承されています。)
パブリック メソッド GetHashCode (Object から継承されています。)
パブリック メソッド GetType (Object から継承されています。)
プロテクト メソッド MemberwiseClone (Object から継承されています。)
パブリック メソッド ToString (Object から継承されています。)

先頭に戻る

説明

ChangeOperationResponse オブジェクトは、このライブラリのユーザーが直接構築するためのものではありません。 代わりに、DataServiceResponse クラスの列挙子を介して返された操作応答を列挙するときに、参照が返されます。

SaveChanges は、SaveChanges の最後の呼び出し以降に DataServiceContext によって収集された保留中の変更をデータ サービスに送信します。 変更は、AddObjectAddLinkDeleteObjectDeleteLinkDetachDetachLink などのメソッドを呼び出すことでコンテキストに追加されます。

SaveChanges は、データ サービスに送信されるすべての操作への応答を表す DataServiceResponse を返します。 DataServiceResponse オブジェクトには、ChangeOperationResponse オブジェクトのシーケンスが含まれます。さらに、これらの各オブジェクトには、永続化または試行された変更を表す、EntityDescriptor インスタンスまたは LinkDescriptor インスタンスのシーケンスが含まれます。

使用例

SaveChanges の呼び出しの結果を処理する方法を次のコードに示します。

DataServiceContext service = new DataServiceContext(new Uri("http://myserviceroot"));

// Do insert, update, delete, or attach operations.

DataServiceResponse dsr;

try
{
    dsr = service.SaveChanges(SaveChangesOptions.Batch);  
   // Or service.SaveChanges(SaveChangesOptions.ContinueOnError); 
   //Or service.SaveChanges();
   // If there are no errors during save changes, process the results:

    if (dsr.IsBatchResponse)
    {
           /*inspect HTTP artifacts associated with the entire batch:
                             dsr.BatchHeaders, dsr.BatchStatusCode*/ }

    foreach (ChangeOperationResponse cor in dsr)
    {
        
            if (cor.Descriptor is EntityDescriptor)
            {
                EntityDescriptor ed = (EntityDescriptor)cor.Descriptor;
                // This should be the case if
                // SaveChanges did not throw an exception.  

                // After an entity is processed by SaveChanges,
                // it is always moved to the unchanged state.
                System.Diagnostics.Debug.Assert(
                           ed.State == EntityStates.Unchanged);  
                // This shows that the state should be unchanged if
                // the result is success.
               
                //process the entity in the response payload: ed.Entity
            }
            else if (cor.Descriptor is LinkDescriptor)
            {
                LinkDescriptor ld = (LinkDescriptor)cor.Descriptor;
               // This should be the case if SaveChanges did not throw an exception.

               // After an entity is processed by SaveChanges it
               // is always moved to the unchanged state.
                System.Diagnostics.Debug.Assert(
                            ld.State == EntityStates.Unchanged);  
                // The state should be unchanged if the result is success.
               
                //process the link in the response payload: ld.Source,
                // ld.SourceProperty, or ld.Target.
            }
     }
    
}
catch (DataServiceSaveException se)
{
    // Error while saving changes
    dsr = se.Response;

    if (dsr.IsBatchResponse) 
    { 
        /*inspect HTTP artifacts associated with the entire batch:
             dsr.BatchHeaders, dsr.BatchStatusCode*/ 
}    
}

    foreach (ChangeOperationResponse cor in dsr)
    {
        if (cor.Error != null)
        {
            //process error
        }
        else
        {
            // same success case processing as in the loop over DSRs results in 
            // the try block. You could put that processing in a method 
            // and call it from here.    
        }
    }

}

 catch(Exception)
 {
    // Error while saving changes, but not thrown by the client library.

    // Process ArgumentException, InvalidOperationException, or similar.
}
}

スレッド セーフ

この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

関連項目

参照

System.Data.Services.Client 名前空間