Поделиться через


ChangeOperationResponse Класс

Определение

Результаты, возвращаемые после вызова метода SaveChanges() при перечислении ответов операции, возвращенных классом DataServiceResponse.

public ref class ChangeOperationResponse sealed : System::Data::Services::Client::OperationResponse
public sealed class ChangeOperationResponse : System.Data.Services.Client.OperationResponse
type ChangeOperationResponse = class
    inherit OperationResponse
Public NotInheritable Class ChangeOperationResponse
Inherits OperationResponse
Наследование
ChangeOperationResponse

Примеры

В следующем коде показано, как обрабатывать результаты вызова 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.  
}  
}  

Комментарии

Объекты ChangeOperationResponse не предназначены для создания непосредственно пользователями этой библиотеки. Вместо этого при перечислении ответов операций, возвращенных через перечислитель для класса DataServiceResponse, возвращаются ссылки.

Метод SaveChanges отправляет в службу данных незавершенные изменения, собранные DataServiceContext с момента последнего вызова метода SaveChanges. Изменения добавляются в контекст путем вызова методов AddObject, AddLink, DeleteObject, DeleteLink, Detach, DetachLink и аналогичных методов.

SaveChanges возвращает объект DataServiceResponse, который представляет ответ на все операции, отправленные в службу данных. Объект DataServiceResponse включает последовательность объектов ChangeOperationResponse, которые, в свою очередь, содержат последовательность экземпляров EntityDescriptor или LinkDescriptor, представляющих сохраненные или ожидаемые изменения.

Свойства

Descriptor

Возвращает объект EntityDescriptor или LinkDescriptor, измененный в результате выполнения операции изменения.

Error

Возвращает ошибку, активированную операцией.

(Унаследовано от OperationResponse)
Headers

При переопределении в производном классе содержит заголовки HTTP-ответов, связанные с одной операцией.

(Унаследовано от OperationResponse)
StatusCode

При переопределении в производном классе возвращает или задает код HTTP-ответа, связанного с одной операцией.

(Унаследовано от OperationResponse)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к