Classe ChangeOperationResponse
Résultats retournés après un appel à SaveChanges lors de l'énumération des réponses d'opération retournées par la classe DataServiceResponse.
Hiérarchie d'héritage
System.Object
System.Data.Services.Client.OperationResponse
System.Data.Services.Client.ChangeOperationResponse
Espace de noms : System.Data.Services.Client
Assembly : Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)
Syntaxe
'Déclaration
Public NotInheritable Class ChangeOperationResponse _
Inherits OperationResponse
'Utilisation
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
Le type ChangeOperationResponse expose les membres suivants.
Propriétés
Nom | Description | |
---|---|---|
![]() |
Descriptor | Obtient le EntityDescriptor ou le LinkDescriptor modifié par une opération de modification. |
![]() |
Error | Obtient l'erreur résultant de l'opération. (hérité de OperationResponse.) |
![]() |
Headers | Une fois substituée dans une classe dérivée, contient les en-têtes de réponse HTTP associés à une opération unique. (hérité de OperationResponse.) |
![]() |
StatusCode | Une fois substituée dans une classe dérivée, obtient ou définit le code de réponse HTTP associé à une opération unique. (hérité de OperationResponse.) |
Haut de la page
Méthodes
Nom | Description | |
---|---|---|
![]() |
Equals | (hérité de Object.) |
![]() |
Finalize | (hérité de Object.) |
![]() |
GetHashCode | (hérité de Object.) |
![]() |
GetType | (hérité de Object.) |
![]() |
MemberwiseClone | (hérité de Object.) |
![]() |
ToString | (hérité de Object.) |
Haut de la page
Notes
Les objets ChangeOperationResponse ne sont pas destinés à être construits directement par un utilisateur de cette bibliothèque. À la place, les références sont retournées lors de l'énumération des réponses d'opération retournées via l'énumérateur pour la classe DataServiceResponse.
SaveChanges soumet au service de données les modifications en attente collectées par le DataServiceContext depuis le dernier appel de SaveChanges. Les modifications sont ajoutées au contexte en appelant AddObject, AddLink, DeleteObject, DeleteLink, Detach, DetachLink, et les méthodes similaires.
SaveChanges retourne un DataServiceResponse qui représente la réponse à toutes les opérations envoyées au service de données. L'objet DataServiceResponse inclut une séquence d'objets ChangeOperationResponse qui, à leur tour, contiennent une séquence d'instances EntityDescriptor ou LinkDescriptor représentant les modifications qui ont été tentées ou rendues persistantes.
Exemples
Le code suivant montre comment traiter les résultats d'un appel de 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.
}
}
Sécurité des threads
Tous les membres publics static (Shared dans Visual Basic) de ce type sont thread-safe. Tous les membres de l'instance ne sont pas garantis comme étant thread-safe.