Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Personas que lo han encontrado útil: 1 de 1 - Valorar este tema

ObjectContext.SaveChanges (Método)

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

Espacio de nombres:  System.Data.Objects
Ensamblado:  System.Data.Entity (en System.Data.Entity.dll)
public int SaveChanges()

Valor devuelto

Tipo: System.Int32
Número de objetos que tenían el estado Added, Modified o Deleted cuando se llamó al método SaveChanges.
ExcepciónCondición
OptimisticConcurrencyException

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

Para asegurarse de que los objetos del cliente se han actualizado según la lógica del origen de datos, puede llamar al método Refresh con el valor de StoreWins después de llamar al método SaveChanges. Para obtener más información, vea Saving Changes and Managing Concurrency (Entity Framework).

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

Si se produce una infracción de simultaneidad optimista, se genera una OptimisticConcurrencyException. Puede resolver una infracción de simultaneidad optimista detectándola, llamando al método Refresh con el valor StoreWins o ClientWins y, a continuación, llamando de nuevo al método SaveChanges. Para obtener más información, vea How to: Manage Data Concurrency in the Object Context (Entity Framework).

Este ejemplo se basa en el Adventure Works Sales Model. En este ejemplo, se intenta guardar los cambios, lo que puede producir 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());
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5 SP1

.NET Framework Client Profile

Compatible con: 4

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.