ObjectContext.Refresh Metod

Definition

Uppdaterar specifika objekt i objektkontexten med data från datakällan.

Överlagringar

Name Description
Refresh(RefreshMode, IEnumerable)

Uppdaterar en samling objekt i objektkontexten med data från datakällan.

Refresh(RefreshMode, Object)

Uppdaterar ett objekt i objektkontexten med data från datakällan.

Kommentarer

Ordningen i vilken objekt uppdateras är icke-terministisk.

Refresh(RefreshMode, IEnumerable)

Uppdaterar en samling objekt i objektkontexten med data från datakällan.

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)

Parametrar

refreshMode
RefreshMode

Ett RefreshMode värde som anger om egenskapsändringar i objektkontexten skrivs över med egenskapsvärden från datakällan.

collection
IEnumerable

En IEnumerable samling objekt som ska uppdateras.

Undantag

collection är null.

refreshMode är ogiltigt.

collection är tom.

-eller-

Ett objekt är inte kopplat till kontexten.

Kommentarer

Den här metoden har det dubbla syftet att tillåta att objekt i objektkontexten uppdateras med data från datakällan och är den mekanism med vilken konflikter kan lösas. Mer information finns i Spara ändringar och hantera samtidighet.

Ordningen i vilken objekt uppdateras är icke-terministisk.

När Refresh har anropats uppdateras objektets ursprungliga värden alltid med datakällans värde, men de aktuella värdena kanske eller kanske inte uppdateras med datakällans värde. Detta beror på värdet RefreshMode . Läget StoreWins innebär att objekten i samlingen ska uppdateras så att de matchar datakällans värden. ClientWins innebär att endast ändringarna i objektkontexten sparas, även om det har gjorts andra ändringar i datakällan.

För att säkerställa att objekt har uppdaterats av datakälllogik kan du anropa Refresh med StoreWins när du har anropat SaveChanges metoden.

Se även

Gäller för

Refresh(RefreshMode, Object)

Uppdaterar ett objekt i objektkontexten med data från datakällan.

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)

Parametrar

refreshMode
RefreshMode

Ett av de RefreshMode värden som anger vilket läge som ska användas för att uppdatera ObjectStateManager.

entity
Object

Objektet som ska uppdateras.

Undantag

refreshMode är ogiltigt.

Ett objekt är inte kopplat till kontexten.

Exempel

Det här exemplet försöker spara ändringar och detta kan orsaka en samtidighetskonflikt. Sedan visas hur du löser samtidighetskonflikten genom att uppdatera objektkontexten innan ändringarna sparas på nytt.

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

Kommentarer

Refresh har det dubbla syftet att tillåta att ett objekt uppdateras med data från datakällan och är den mekanism med vilken konflikter kan lösas. Mer information finns i Spara ändringar och hantera samtidighet.

Ordningen i vilken objekt uppdateras är icke-terministisk.

Refresh När metoden har anropats uppdateras objektets ursprungliga värden alltid med datakällans värde, men de aktuella värdena kanske eller kanske inte uppdateras med datakällans värde. Detta beror på RefreshMode. Läget StoreWins innebär att objektet ska uppdateras så att det matchar datakällans värden. Värdet ClientWins innebär att endast ändringarna i objektkontexten sparas, även om det har gjorts andra ändringar i datakällan.

För att säkerställa att ett objekt har uppdaterats av datakälllogik kan du anropa Refresh metoden med StoreWins värdet när du anropar SaveChanges metoden.

Se även

Gäller för