ObjectContext.Refresh Metoda

Definice

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

Přetížení

Refresh(RefreshMode, IEnumerable)

Aktualizace kolekci objektů v kontextu objektu s daty ze zdroje dat.

Refresh(RefreshMode, Object)

Aktualizace objektu v kontextu objektu s daty ze zdroje dat.

Poznámky

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

Refresh(RefreshMode, IEnumerable)

Aktualizace kolekci objektů v kontextu objektu s daty 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 jsou změny vlastností v kontextu objektu přepsány hodnotami vlastností ze zdroje dat.

collection
IEnumerable

Kolekce IEnumerable objektů, které se mají aktualizovat.

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žňuje, aby objekty v kontextu objektu byly aktualizovány daty 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í o hodnotu 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 pomocí StoreWins příkazu .

Viz také

Platí pro

Refresh(RefreshMode, Object)

Aktualizace objektu v kontextu objektu s 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, který režim se má použít pro 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žňuje aktualizaci objektu daty 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 zavolání Refresh metody se původní hodnoty objektu vždy aktualizují o hodnotu 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, i když ve zdroji dat došlo k jiným změnám.

Chcete-li zajistit, aby byl objekt aktualizován logikou na straně zdroje dat, můžete po volání metody volat metodu RefreshSaveChanges s StoreWins hodnotou.

Viz také

Platí pro