Compartir a través de


ObjectContext.Refresh Método

Definición

Actualiza objetos concretos en el contexto del objeto con datos procedentes del origen de datos.

Sobrecargas

Refresh(RefreshMode, IEnumerable)

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

Refresh(RefreshMode, Object)

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

Comentarios

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

Refresh(RefreshMode, IEnumerable)

Actualiza una colección de objetos en el contexto del objeto con datos procedentes 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 de RefreshMode que indica si los cambios de las propiedades en el contexto del objeto se sobrescriben con los valores de las propiedades procedentes del origen de datos.

collection
IEnumerable

Colección IEnumerable de objetos que hay que actualizar.

Excepciones

collection es null.

refreshMode no es válido.

collection está vacía.

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 procedentes del origen de datos y de ser el mecanismo que permite resolver los conflictos. Para obtener más información, vea Guardar cambios y administrar simultaneidad.

El orden en 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 los valores actuales podrían o no actualizarse con el valor del origen de datos. Esto depende del valor de RefreshMode. 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 los objetos 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.

Consulte también

Se aplica a

Refresh(RefreshMode, Object)

Actualiza un objeto en el contexto del objeto con datos procedentes 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 valores de RefreshMode que especifica qué modo se debe usar para actualizar el ObjectStateManager.

entity
Object

Objeto que se va a actualizar.

Excepciones

collection es null.

refreshMode no es válido.

collection está vacía.

o bien

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, 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 se actualice un objeto con datos procedentes del origen de datos y de ser el mecanismo que permite resolver los conflictos. Para obtener más información, vea Guardar cambios y administrar simultaneidad.

El orden en 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 modo StoreWins significa que el objeto debería actualizarse para que coincida con los valores del origen de datos. El valor de ClientWins significa que solo se conservarán los cambios en el contexto del objeto, aunque se hayan producido otros cambios en el origen de datos.

Para asegurarse de que un objeto se ha 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.

Consulte también

Se aplica a