ObjectContext.Refresh Methode

Definitie

Hiermee worden specifieke objecten in de objectcontext bijgewerkt met gegevens uit de gegevensbron.

Overloads

Name Description
Refresh(RefreshMode, IEnumerable)

Hiermee werkt u een verzameling objecten in de objectcontext bij met gegevens uit de gegevensbron.

Refresh(RefreshMode, Object)

Hiermee werkt u een object in de objectcontext bij met gegevens uit de gegevensbron.

Opmerkingen

De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.

Refresh(RefreshMode, IEnumerable)

Hiermee werkt u een verzameling objecten in de objectcontext bij met gegevens uit de gegevensbron.

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)

Parameters

refreshMode
RefreshMode

Een RefreshMode waarde die aangeeft of eigenschapswijzigingen in de objectcontext worden overschreven met eigenschapswaarden uit de gegevensbron.

collection
IEnumerable

Een IEnumerable verzameling objecten die moeten worden vernieuwd.

Uitzonderingen

collection is null.

refreshMode is ongeldig.

collection is leeg.

– of –

Een object is niet gekoppeld aan de context.

Opmerkingen

Deze methode heeft het dubbele doel om objecten in de objectcontext te laten vernieuwen met gegevens uit de gegevensbron en het mechanisme waarmee conflicten kunnen worden opgelost. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.

De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.

Nadat Refresh deze is aangeroepen, worden de oorspronkelijke waarden van het object altijd bijgewerkt met de gegevensbronwaarde, maar de huidige waarden worden mogelijk of niet bijgewerkt met de gegevensbronwaarde. Dit is afhankelijk van de RefreshMode waarde. De StoreWins modus betekent dat de objecten in de verzameling moeten worden bijgewerkt zodat deze overeenkomen met de gegevensbronwaarden. ClientWins betekent dat alleen de wijzigingen in de objectcontext behouden blijven, zelfs als er andere wijzigingen zijn aangebracht in de gegevensbron.

Om ervoor te zorgen dat objecten zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u aanroepen nadat StoreWins u de SaveChanges methode hebt aangeroepenRefresh.

Zie ook

Van toepassing op

Refresh(RefreshMode, Object)

Hiermee werkt u een object in de objectcontext bij met gegevens uit de gegevensbron.

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)

Parameters

refreshMode
RefreshMode

Een van de RefreshMode waarden die aangeeft welke modus moet worden gebruikt voor het vernieuwen van de ObjectStateManager.

entity
Object

Het object dat moet worden vernieuwd.

Uitzonderingen

refreshMode is ongeldig.

Een object is niet gekoppeld aan de context.

Voorbeelden

In dit voorbeeld wordt geprobeerd wijzigingen op te slaan. Dit kan een gelijktijdigheidsconflict veroorzaken. Vervolgens ziet u hoe u het gelijktijdigheidsconflict kunt oplossen door de objectcontext te vernieuwen voordat u wijzigingen opnieuw opslaat.

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

Opmerkingen

Refresh heeft het dubbele doel om een object te vernieuwen met gegevens uit de gegevensbron en het mechanisme te zijn waarmee conflicten kunnen worden opgelost. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.

De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.

Nadat de Refresh methode is aangeroepen, worden de oorspronkelijke waarden van het object altijd bijgewerkt met de gegevensbronwaarde, maar de huidige waarden worden mogelijk wel of niet bijgewerkt met de gegevensbronwaarde. Dit hangt af van de RefreshMode. De StoreWins modus betekent dat het object moet worden bijgewerkt zodat het overeenkomt met de gegevensbronwaarden. De ClientWins waarde betekent dat alleen de wijzigingen in de objectcontext behouden blijven, zelfs als er andere wijzigingen zijn aangebracht in de gegevensbron.

Om ervoor te zorgen dat een object is bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u de SaveChanges methode hebt aangeroepen.

Zie ook

Van toepassing op