共用方式為


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 取得變更作業修改的 EntityDescriptorLinkDescriptor
公用屬性 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 物件序列,這些物件包含 EntityDescriptorLinkDescriptor 執行個體序列,而執行個體代表持續或嘗試的變更。

範例

下列程式碼示範如何處理 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.
}
}

執行緒安全性

這個型別的任何公用 static (在 Visual Basic 中為 Shared) 成員都是執行緒安全的。並不是所有的執行個體成員都保證可以用於所有的執行緒。

請參閱

參考

System.Data.Services.Client 命名空間