ObjectContext.Refresh Método

Definición

Actualiza objetos específicos en el contexto del objeto con datos del origen de datos.

Sobrecargas

Nombre Description
Refresh(RefreshMode, IEnumerable)

Actualiza una colección de objetos en el contexto del objeto con datos del origen de datos.

Refresh(RefreshMode, Object)

Actualiza un objeto en el contexto del objeto con datos del origen de datos.

Comentarios

El orden en el que se actualizan los objetos es no determinista.

Refresh(RefreshMode, IEnumerable)

Actualiza una colección de objetos en el contexto del objeto con datos del origen de datos.

public:
 void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Collections::IEnumerable ^ collection);
public void Refresh(System.Data.Objects.RefreshMode refreshMode, System.Collections.IEnumerable collection);
member this.Refresh : System.Data.Objects.RefreshMode * System.Collections.IEnumerable -> unit
Public Sub Refresh (refreshMode As RefreshMode, collection As IEnumerable)

Parámetros

refreshMode
RefreshMode

Valor RefreshMode que indica si los cambios de propiedad en el contexto del objeto se sobrescriben con valores de propiedad del origen de datos.

collection
IEnumerable

Colección IEnumerable de objetos que se van a actualizar.

Excepciones

collection es null.

refreshMode no es válido.

collection está vacío.

O bien

Un objeto no está asociado al contexto.

Comentarios

Este método tiene el doble propósito de permitir que los objetos del contexto del objeto se actualicen con datos del origen de datos y que sean el mecanismo por el que se pueden resolver conflictos.

El orden en el que se actualizan los objetos es no determinista.

Después Refresh de llamar a , los valores originales del objeto siempre se actualizarán con el valor del origen de datos, pero es posible que los valores actuales se actualicen o no con el valor del origen de datos. Esto depende del RefreshMode valor. El StoreWins modo significa que los objetos de la colección deben actualizarse para que coincidan con los valores del origen de datos. ClientWins significa que solo se conservarán los cambios en el contexto del objeto, incluso si se han producido otros cambios en el origen de datos.

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

Consulte también

Se aplica a

Refresh(RefreshMode, Object)

Actualiza un objeto en el contexto del objeto con datos del origen de datos.

public:
 void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Object ^ entity);
public void Refresh(System.Data.Objects.RefreshMode refreshMode, object entity);
member this.Refresh : System.Data.Objects.RefreshMode * obj -> unit
Public Sub Refresh (refreshMode As RefreshMode, entity As Object)

Parámetros

refreshMode
RefreshMode

Uno de los RefreshMode valores que especifica el modo que se va a usar para actualizar .ObjectStateManager

entity
Object

Objeto que se va a actualizar.

Excepciones

refreshMode no es válido.

Un objeto no está asociado al contexto.

Ejemplos

En este ejemplo se intentan guardar los cambios y esto puede provocar un conflicto de simultaneidad. A continuación, se 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

Refresh tiene el doble propósito de permitir que un objeto se actualice con datos del origen de datos y que sea el mecanismo por el que se pueden resolver conflictos.

El orden en el que se actualizan los objetos es no determinista.

Después de llamar al Refresh método , los valores originales del objeto siempre se actualizarán con el valor del origen de datos, pero los valores actuales podrían o no actualizarse con el valor del origen de datos. Esto depende de RefreshMode. El StoreWins modo significa que el objeto debe actualizarse para que coincida con los valores del origen de datos. El ClientWins valor significa que solo se conservarán los cambios en el contexto del objeto, incluso si se han producido otros cambios en el origen de datos.

Para asegurarse de que la lógica del origen de datos ha actualizado un objeto, puede llamar al Refresh método con el StoreWins valor después de llamar al SaveChanges método .

Consulte también

Se aplica a