ObjectContext.SaveChanges Método

Definición

Conserva todas las actualizaciones en el origen de datos.

Sobrecargas

Nombre Description
SaveChanges()

Conserva todas las actualizaciones del origen de datos y restablece el seguimiento de cambios en el contexto del objeto.

SaveChanges(Boolean)
Obsoletos.

Conserva todas las actualizaciones del origen de datos y, opcionalmente, restablece el seguimiento de cambios en el contexto del objeto.

SaveChanges(SaveOptions)

Conserva todas las actualizaciones del origen de datos con el especificado SaveOptions.

SaveChanges()

Conserva todas las actualizaciones del origen de datos y restablece el seguimiento de cambios en el contexto del objeto.

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

Devoluciones

Número de objetos en un Addedestado , Modifiedo Deleted cuando SaveChanges() se llamó a .

Excepciones

Se ha producido una infracción de simultaneidad optimista en el origen de datos.

Ejemplos

En este ejemplo se intentan guardar los cambios, lo que puede provocar un conflicto de simultaneidad. A continuación, muestra cómo resolver el conflicto de simultaneidad actualizando el contexto del objeto antes de volver a guardar los cambios.

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());
    }
}

Comentarios

Para asegurarse de que la lógica del origen de datos actualizó los objetos del cliente, puede llamar al Refresh método con el StoreWins valor después de llamar a SaveChanges.

SaveChanges funciona dentro de una transacción. SaveChanges revertirá esa transacción y producirá una excepción si no se puede conservar alguno de los objetos sucios ObjectStateEntry .

Si se ha producido una infracción de simultaneidad optimista, se produce una OptimisticConcurrencyException excepción . Puede resolver una infracción de simultaneidad optimista si la detecta, llama al Refresh método con el StoreWins valor o ClientWins y, a continuación, vuelve a llamar a SaveChanges .

Consulte también

Se aplica a

SaveChanges(Boolean)

Precaución

Use SaveChanges(SaveOptions options) instead.

Conserva todas las actualizaciones del origen de datos y, opcionalmente, restablece el seguimiento de cambios en el contexto del objeto.

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

Parámetros

acceptChangesDuringSave
Boolean

Este parámetro es necesario para la compatibilidad con transacciones del lado cliente. Si truees , el seguimiento de cambios en todos los objetos se restablece después SaveChanges(Boolean) de finalizar. Si falsees , debe llamar al AcceptAllChanges() método después SaveChanges(Boolean)de .

Devoluciones

Número de objetos en un Addedestado , Modifiedo Deleted cuando SaveChanges() se llamó a .

Atributos

Excepciones

Se ha producido una infracción de simultaneidad optimista.

Comentarios

Llame al SaveChanges(SaveOptions) método en su lugar.

Se aplica a

SaveChanges(SaveOptions)

Conserva todas las actualizaciones del origen de datos con el especificado 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

Parámetros

options
SaveOptions

Valor SaveOptions que determina el comportamiento de la operación.

Devoluciones

Número de objetos en un Addedestado , Modifiedo Deleted cuando SaveChanges() se llamó a .

Excepciones

Se ha producido una infracción de simultaneidad optimista.

Comentarios

Use esta sobrecarga específica de para asegurarse de SaveChanges que DetectChanges se llama a antes de guardar los cambios en el origen de datos o que AcceptAllChanges se llama después de guardar los cambios en el origen de datos.

Esta enumeración tiene un que FlagsAttribute permite una combinación bit a bit de sus valores de miembro.

Para asegurarse de que la lógica del origen de datos actualizó los objetos del cliente, puede llamar al Refresh método con el StoreWins valor después de llamar a SaveChanges. El SaveChanges método funciona en una transacción. SaveChanges revertirá esa transacción y producirá una excepción si no se puede conservar alguno de los objetos sucios ObjectStateEntry .

Si se ha producido una infracción de simultaneidad optimista, se produce una OptimisticConcurrencyException excepción . Puede resolver una infracción de simultaneidad optimista si la detecta, llama al Refresh método con los StoreWins valores o ClientWins y, a continuación, vuelve a llamar al SaveChanges método .

Se aplica a