ObjectContext.Refresh Metoda

Definice

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

Přetížení

Name Description
Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekci objektů v kontextu objektu daty ze zdroje dat.

Refresh(RefreshMode, Object)

Aktualizuje objekt v kontextu objektu daty ze zdroje dat.

Poznámky

Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.

Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekci objektů v kontextu objektu 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 se změny vlastností v kontextu objektu přepíšou hodnotami vlastností ze zdroje dat.

collection
IEnumerable

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

Výjimky

collection je null.

refreshMode není platný.

collection je prázdný.

nebo

Objekt není připojen k kontextu.

Poznámky

Tato metoda má dvojí účel, který umožňuje, aby objekty v kontextu objektu byly aktualizovány daty ze zdroje dat a mechanismus, pomocí kterého lze konflikty vyřešit.

Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.

Po Refresh zavolání budou původní hodnoty objektu vždy aktualizovány hodnotou zdroje dat, ale aktuální hodnoty mohou nebo nemusí být aktualizovány hodnotou zdroje dat. To závisí na hodnotě RefreshMode . Režim StoreWins znamená, že objekty v kolekci by se měly aktualizovat 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 došlo k jiným změnám ve zdroji dat.

Chcete-li zajistit, aby byly objekty aktualizovány logikou na straně zdroje dat, můžete RefreshStoreWins zavolat po volání SaveChanges metody.

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čují režim, který se má použít pro aktualizaci ObjectStateManager.

entity
Object

Objekt, který se má aktualizovat.

Výjimky

refreshMode není platný.

Objekt není připojen k kontextu.

Příklady

Tento příklad se pokusí uložit změny a to 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 povolení aktualizace objektu dat ze zdroje dat a mechanismus, pomocí kterého lze konflikty vyřešit.

Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.

Refresh Po zavolání metody budou původní hodnoty objektu vždy aktualizovány 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 se měl aktualizovat 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 objekt byl aktualizován logikou na straně zdroje dat, můžete metodu StoreWins zavolat Refresh s hodnotou po volání SaveChanges metody.

Viz také

Platí pro