Compartilhar via


ObjectContext.Refresh Método

Definição

Atualiza objetos específicos no contexto de objeto com os dados da fonte de dados.

Sobrecargas

Refresh(RefreshMode, IEnumerable)

Atualiza uma coleção de objetos no contexto de objeto com os dados da fonte de dados.

Refresh(RefreshMode, Object)

Atualiza um objeto no contexto de objeto com os dados da fonte de dados.

Comentários

A ordem na qual os objetos são atualizados não é determinística.

Refresh(RefreshMode, IEnumerable)

Atualiza uma coleção de objetos no contexto de objeto com os dados da fonte de dados.

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

Um valor RefreshMode que indica se as alterações de propriedade no contexto de objeto são substituídas por valores de propriedade da fonte de dados.

collection
IEnumerable

Uma coleção de objetos IEnumerable a serem atualizados.

Exceções

collection é null.

refreshMode não é válido.

collection está vazio.

- ou -

Um objeto não está anexado ao contexto.

Comentários

Esse método tem a dupla finalidade de permitir que objetos no contexto de objeto sejam atualizados com dados da fonte de dados e ser o mecanismo pelo qual os conflitos podem ser resolvidos. Para obter mais informações, consulte Salvando alterações e gerenciando simultaneidade.

A ordem na qual os objetos são atualizados não é determinística.

Depois Refresh de ser chamado, os valores originais do objeto sempre serão atualizados com o valor da fonte de dados, mas os valores atuais podem ou não ser atualizados com o valor da fonte de dados. Isso depende do RefreshMode valor. O StoreWins modo significa que os objetos na coleção devem ser atualizados para corresponder aos valores da fonte de dados. ClientWins significa que somente as alterações no contexto do objeto serão mantidas, mesmo se houver outras alterações na fonte de dados.

Para garantir que os objetos tenham sido atualizados pela lógica do lado da fonte de dados, você pode chamar Refresh com StoreWins depois de chamar o SaveChanges método.

Confira também

Aplica-se a

Refresh(RefreshMode, Object)

Atualiza um objeto no contexto de objeto com os dados da fonte de dados.

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

Um dos valores RefreshMode que especifica qual modo deve ser usado para atualizar o ObjectStateManager.

entity
Object

O objeto a ser atualizado.

Exceções

collection é null.

refreshMode não é válido.

collection está vazio.

- ou -

Um objeto não está anexado ao contexto.

Exemplos

Este exemplo tenta salvar alterações e isso pode causar um conflito de simultaneidade. Em seguida, ele mostra como resolver o conflito de simultaneidade atualizando o contexto do objeto antes de salvar novamente as alterações.

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

Comentários

Refresh tem a dupla finalidade de permitir que um objeto seja atualizado com dados da fonte de dados e ser o mecanismo pelo qual os conflitos podem ser resolvidos. Para obter mais informações, consulte Salvando alterações e gerenciando simultaneidade.

A ordem na qual os objetos são atualizados não é determinística.

Depois que o Refresh método for chamado, os valores originais do objeto sempre serão atualizados com o valor da fonte de dados, mas os valores atuais podem ou não ser atualizados com o valor da fonte de dados. Isso depende do RefreshMode. O StoreWins modo significa que o objeto deve ser atualizado para corresponder aos valores da fonte de dados. O ClientWins valor significa que somente as alterações no contexto do objeto serão mantidas, mesmo que tenha havido outras alterações na fonte de dados.

Para garantir que um objeto tenha sido atualizado pela lógica do lado da fonte de dados, você pode chamar o Refresh método com o StoreWins valor depois de chamar o SaveChanges método .

Confira também

Aplica-se a