Partager via


ObjectContext.SaveChanges Méthode

Définition

Conserve toutes les mises à jour de la source de données.

Surcharges

Nom Description
SaveChanges()

Conserve toutes les mises à jour de la source de données et réinitialise le suivi des modifications dans le contexte de l’objet.

SaveChanges(Boolean)
Obsolète.

Conserve toutes les mises à jour de la source de données et réinitialise éventuellement le suivi des modifications dans le contexte de l’objet.

SaveChanges(SaveOptions)

Conserve toutes les mises à jour de la source de données avec le fichier spécifié SaveOptions.

SaveChanges()

Conserve toutes les mises à jour de la source de données et réinitialise le suivi des modifications dans le contexte de l’objet.

public:
 int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer

Retours

Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.

Exceptions

Une violation d’accès concurrentiel optimiste s’est produite dans la source de données.

Exemples

Cet exemple tente d’enregistrer les modifications, ce qui peut entraîner un conflit d’accès concurrentiel. Ensuite, il montre comment résoudre le conflit d’accès concurrentiel en actualisant le contexte de l’objet avant de réinscrire les modifications.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        // Perform an operation with a high-level of concurrency.
        // Change the status of all orders without an approval code.
        ObjectQuery<SalesOrderHeader> orders =
            context.SalesOrderHeaders.Where(
            "it.CreditCardApprovalCode IS NULL").Top("100");

        foreach (SalesOrderHeader order in orders)
        {
            // Reset the order status to 4 = Rejected.
            order.Status = 4;
        }
        try
        {
            // Try to save changes, which may cause a conflict.
            int num = context.SaveChanges();
            Console.WriteLine("No conflicts. " +
                num.ToString() + " updates saved.");
        }
        catch (OptimisticConcurrencyException)
        {
            // Resolve the concurrency conflict by refreshing the
            // object context before re-saving changes.
            context.Refresh(RefreshMode.ClientWins, orders);

            // Save changes.
            context.SaveChanges();
            Console.WriteLine("OptimisticConcurrencyException "
            + "handled and changes saved");
        }

        foreach (SalesOrderHeader order in orders)
        {
            Console.WriteLine("Order ID: " + order.SalesOrderID.ToString()
                + " Order status: " + order.Status.ToString());
        }
    }
    catch (UpdateException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Remarques

Pour vous assurer que les objets sur le client ont été mis à jour par la logique côté source de données, vous pouvez appeler la méthode avec la RefreshStoreWins valeur après l’appel SaveChanges.

SaveChanges opère dans une transaction. SaveChanges restaure cette transaction et lève une exception si l’un des objets sales ObjectStateEntry ne peut pas être conservé.

Si une violation d’accès concurrentiel optimiste s’est produite, une OptimisticConcurrencyException violation est levée. Vous pouvez résoudre une violation d’accès concurrentiel optimiste en l’interceptant, en appelant la méthode avec la ou ClientWins la RefreshStoreWins valeur, puis en appelant SaveChanges à nouveau.

Voir aussi

S’applique à

SaveChanges(Boolean)

Attention

Use SaveChanges(SaveOptions options) instead.

Conserve toutes les mises à jour de la source de données et réinitialise éventuellement le suivi des modifications dans le contexte de l’objet.

public:
 int SaveChanges(bool acceptChangesDuringSave);
public int SaveChanges(bool acceptChangesDuringSave);
[System.ComponentModel.Browsable(false)]
[System.Obsolete("Use SaveChanges(SaveOptions options) instead.")]
public int SaveChanges(bool acceptChangesDuringSave);
member this.SaveChanges : bool -> int
[<System.ComponentModel.Browsable(false)>]
[<System.Obsolete("Use SaveChanges(SaveOptions options) instead.")>]
member this.SaveChanges : bool -> int
Public Function SaveChanges (acceptChangesDuringSave As Boolean) As Integer

Paramètres

acceptChangesDuringSave
Boolean

Ce paramètre est nécessaire pour la prise en charge des transactions côté client. Si true, le suivi des modifications sur tous les objets est réinitialisé une fois SaveChanges(Boolean) terminé. Si false, vous devez appeler la AcceptAllChanges() méthode après SaveChanges(Boolean).

Retours

Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.

Attributs

Exceptions

Une violation d’accès concurrentiel optimiste s’est produite.

Remarques

Appelez la méthode à la SaveChanges(SaveOptions) place.

S’applique à

SaveChanges(SaveOptions)

Conserve toutes les mises à jour de la source de données avec le fichier spécifié SaveOptions.

public:
 virtual int SaveChanges(System::Data::Objects::SaveOptions options);
public virtual int SaveChanges(System.Data.Objects.SaveOptions options);
abstract member SaveChanges : System.Data.Objects.SaveOptions -> int
override this.SaveChanges : System.Data.Objects.SaveOptions -> int
Public Overridable Function SaveChanges (options As SaveOptions) As Integer

Paramètres

options
SaveOptions

Valeur SaveOptions qui détermine le comportement de l’opération.

Retours

Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.

Exceptions

Une violation d’accès concurrentiel optimiste s’est produite.

Remarques

Utilisez cette surcharge spécifique pour SaveChanges vous assurer qu’elle DetectChanges est appelée avant d’enregistrer les modifications apportées à la source de données ou qui AcceptAllChanges est appelée après avoir enregistré les modifications apportées à la source de données.

Cette énumération a une FlagsAttribute fonction qui permet une combinaison au niveau du bit de ses valeurs membres.

Pour vous assurer que les objets sur le client ont été mis à jour par la logique côté source de données, vous pouvez appeler la Refresh méthode avec la StoreWins valeur après l’appel SaveChanges. La SaveChanges méthode fonctionne dans une transaction. SaveChanges restaure cette transaction et lève une exception si l’un des objets sales ObjectStateEntry ne peut pas être conservé.

Si une violation d’accès concurrentiel optimiste s’est produite, une OptimisticConcurrencyException violation est levée. Vous pouvez résoudre une violation d’accès concurrentiel optimiste en l’interceptant, en appelant la Refresh méthode avec les valeurs ou ClientWins les StoreWins valeurs, puis en appelant à nouveau la SaveChanges méthode.

S’applique à