ObjectContext.Refresh Metodo

Definizione

Aggiorna oggetti specifici nel contesto dell'oggetto con i dati dell'origine dati.

Overload

Nome Descrizione
Refresh(RefreshMode, IEnumerable)

Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati dell'origine dati.

Refresh(RefreshMode, Object)

Aggiorna un oggetto nel contesto dell'oggetto con i dati dell'origine dati.

Commenti

L'ordine in cui gli oggetti vengono aggiornati non è deterministico.

Refresh(RefreshMode, IEnumerable)

Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati dell'origine dati.

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)

Parametri

refreshMode
RefreshMode

Valore RefreshMode che indica se le modifiche delle proprietà nel contesto dell'oggetto vengono sovrascritte con i valori delle proprietà dell'origine dati.

collection
IEnumerable

Raccolta IEnumerable di oggetti da aggiornare.

Eccezioni

collection è null.

refreshMode non è valido.

collection è vuoto.

oppure

Un oggetto non è associato al contesto.

Commenti

Questo metodo ha lo scopo doppio di consentire l'aggiornamento degli oggetti nel contesto dell'oggetto con i dati dell'origine dati e il meccanismo in base al quale è possibile risolvere i conflitti.

L'ordine in cui gli oggetti vengono aggiornati non è deterministico.

Dopo Refresh la chiamata, i valori originali dell'oggetto verranno sempre aggiornati con il valore dell'origine dati, ma i valori correnti potrebbero o meno essere aggiornati con il valore dell'origine dati. Questo dipende dal RefreshMode valore. La StoreWins modalità indica che gli oggetti nella raccolta devono essere aggiornati in modo che corrispondano ai valori dell'origine dati. ClientWins significa che verranno mantenute solo le modifiche nel contesto dell'oggetto, anche se sono state apportate altre modifiche nell'origine dati.

Per assicurarsi che gli oggetti siano stati aggiornati dalla logica lato origine dati, è possibile chiamare con StoreWins dopo aver chiamato Refresh il SaveChanges metodo .

Vedi anche

Si applica a

Refresh(RefreshMode, Object)

Aggiorna un oggetto nel contesto dell'oggetto con i dati dell'origine dati.

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)

Parametri

refreshMode
RefreshMode

Uno dei RefreshMode valori che specifica la modalità da utilizzare per l'aggiornamento di ObjectStateManager.

entity
Object

Oggetto da aggiornare.

Eccezioni

refreshMode non è valido.

Un oggetto non è associato al contesto.

Esempio

In questo esempio viene eseguito un tentativo di salvataggio delle modifiche e questo può causare un conflitto di concorrenza. Viene quindi illustrato come risolvere il conflitto di concorrenza aggiornando il contesto dell'oggetto prima di salvare di nuovo le modifiche.

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

Commenti

Refresh ha lo scopo doppio di consentire l'aggiornamento di un oggetto con i dati dell'origine dati e il meccanismo in base al quale è possibile risolvere i conflitti.

L'ordine in cui gli oggetti vengono aggiornati non è deterministico.

Dopo aver chiamato il Refresh metodo, i valori originali dell'oggetto verranno sempre aggiornati con il valore dell'origine dati, ma i valori correnti potrebbero o non essere aggiornati con il valore dell'origine dati. Questo dipende dall'oggetto RefreshMode. La StoreWins modalità indica che l'oggetto deve essere aggiornato in modo che corrisponda ai valori dell'origine dati. Il ClientWins valore indica che verranno mantenute solo le modifiche nel contesto dell'oggetto, anche se sono state apportate altre modifiche nell'origine dati.

Per assicurarsi che un oggetto sia stato aggiornato dalla logica lato origine dati, è possibile chiamare il Refresh metodo con il StoreWins valore dopo aver chiamato il SaveChanges metodo .

Vedi anche

Si applica a