Sdílet prostřednictvím


ObjectContext.Refresh Metoda

Definice

Aktualizuje konkrétní objekty v kontextu objektu daty ze zdroje dat.

Přetížení

Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekci objektů v kontextu objektu pomocí dat ze zdroje dat.

Refresh(RefreshMode, Object)

Aktualizuje objekt v kontextu objektu daty ze zdroje dat.

Poznámky

Pořadí, ve kterém se objekty aktualizují, je nedeterministické.

Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekci objektů v kontextu objektu pomocí dat ze zdroje dat.

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)

Parametry

refreshMode
RefreshMode

Hodnota RefreshMode , která označuje, zda změny vlastnosti v kontextu objektu jsou přepsány hodnotami vlastností ze zdroje dat.

collection
IEnumerable

Kolekce IEnumerable objektů k aktualizaci.

Výjimky

collection je null.

refreshMode není platný.

collection je prázdné.

-nebo-

Objekt není připojen ke kontextu.

Poznámky

Tato metoda má dvojí účel – umožnit objektům v kontextu objektu aktualizovat data ze zdroje dat a je mechanismem, pomocí kterého lze konflikty vyřešit. Další informace najdete v tématech Ukládání změn a Správa souběžnosti.

Pořadí, ve kterém se objekty aktualizují, je nedeterministické.

Po Refresh zavolání se původní hodnoty objektu vždy aktualizují hodnotou zdroje dat, ale aktuální hodnoty se můžou nebo nemusí aktualizovat hodnotou zdroje dat. To závisí na hodnotě RefreshMode . Režim StoreWins znamená, že objekty v kolekci by měly být aktualizovány tak, aby odpovídaly hodnotám zdroje dat. ClientWins znamená, že se zachovají pouze změny v kontextu objektu, a to i v případě, že ve zdroji dat došlo k jiným změnám.

Pokud chcete zajistit, aby objekty byly aktualizovány logikou na straně zdroje dat, můžete po volání metody volat Refresh metodu SaveChanges .StoreWins

Viz také

Platí pro

Refresh(RefreshMode, Object)

Aktualizuje objekt v kontextu objektu daty ze zdroje dat.

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)

Parametry

refreshMode
RefreshMode

Jedna z RefreshMode hodnot, která určuje režim, který se má použít k aktualizaci .ObjectStateManager

entity
Object

Objekt, který se má aktualizovat.

Výjimky

collection je null.

refreshMode není platný.

collection je prázdné.

-nebo-

Objekt není připojen ke kontextu.

Příklady

Tento příklad se pokusí uložit změny, což může způsobit konflikt souběžnosti. Pak ukazuje, jak vyřešit konflikt souběžnosti aktualizací kontextu objektu před opětovným uložením změn.

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

Poznámky

Refresh má dvojí účel– umožnit aktualizaci objektu pomocí dat ze zdroje dat a představuje mechanismus, pomocí kterého lze konflikty vyřešit. Další informace najdete v tématech Ukládání změn a Správa souběžnosti.

Pořadí, ve kterém se objekty aktualizují, je nedeterministické.

Po zavolání Refresh metody se původní hodnoty objektu vždy aktualizují hodnotou zdroje dat, ale aktuální hodnoty mohou nebo nemusí být aktualizovány hodnotou zdroje dat. To závisí na .RefreshMode Režim StoreWins znamená, že objekt by měl být aktualizován tak, aby odpovídal hodnotám zdroje dat. Hodnota ClientWins znamená, že se zachovají pouze změny v kontextu objektu, a to i v případě, že ve zdroji dat došlo k jiným změnám.

Pokud chcete zajistit, aby byl objekt aktualizován logikou na straně zdroje dat, můžete po volání SaveChanges metody volat metodu StoreWinsRefresh s hodnotou .

Viz také

Platí pro