ObjectContext.Refresh Metódus

Definíció

Frissíti az objektumkörnyezet adott objektumait az adatforrásból származó adatokkal.

Túlterhelések

Name Description
Refresh(RefreshMode, IEnumerable)

Frissíti az objektumkörnyezet objektumgyűjteményét az adatforrásból származó adatokkal.

Refresh(RefreshMode, Object)

Frissíti az objektumkörnyezetben lévő objektumot az adatforrásból származó adatokkal.

Megjegyzések

Az objektumok frissítésének sorrendje nem meghatározható.

Refresh(RefreshMode, IEnumerable)

Frissíti az objektumkörnyezet objektumgyűjteményét az adatforrásból származó adatokkal.

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)

Paraméterek

refreshMode
RefreshMode

Egy RefreshMode érték, amely azt jelzi, hogy az objektumkörnyezet tulajdonságváltozásai felülíródnak-e az adatforrás tulajdonságértékeivel.

collection
IEnumerable

Frissítendő IEnumerable objektumok gyűjteménye.

Kivételek

collection az null.

refreshMode érvénytelen.

collection üres.

-vagy-

Egy objektum nincs csatolva a környezethez.

Megjegyzések

Ennek a módszernek kettős célja, hogy lehetővé teszi az objektumkörnyezetben lévő objektumoknak az adatforrásból származó adatokkal való frissítését, és ez az a mechanizmus, amellyel feloldhatók az ütközések. További információ: Módosítások mentése és Egyidejűség kezelése.

Az objektumok frissítésének sorrendje nem meghatározható.

A meghívás után Refresh az objektum eredeti értékei mindig frissülnek az adatforrás értékével, de előfordulhat, hogy az aktuális értékek nem frissülnek az adatforrás értékével. Ez az RefreshMode értéktől függ. A StoreWins mód azt jelenti, hogy a gyűjtemény objektumait frissíteni kell az adatforrás értékeinek megfelelően. ClientWins azt jelenti, hogy csak az objektumkörnyezet módosításai maradnak meg, még akkor is, ha más változások is történtek az adatforrásban.

Annak érdekében, hogy az objektumok frissüljenek az adatforrásoldali logikávalRefresh, a metódus meghívása után hívhatja StoreWins meg.SaveChanges

Lásd még

A következőre érvényes:

Refresh(RefreshMode, Object)

Frissíti az objektumkörnyezetben lévő objektumot az adatforrásból származó adatokkal.

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)

Paraméterek

refreshMode
RefreshMode

Az egyik RefreshMode érték, amely meghatározza, hogy melyik módot használja a ObjectStateManagerfrissítéshez.

entity
Object

A frissíteni kívánt objektum.

Kivételek

refreshMode érvénytelen.

Egy objektum nincs csatolva a környezethez.

Példák

Ez a példa megpróbálja menteni a módosításokat, és ez egyidejűségi ütközést okozhat. Ezután bemutatja, hogyan oldhatja fel az egyidejűségi ütközést az objektumkörnyezet frissítésével a módosítások újbóli mentése előtt.

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

Megjegyzések

Refresh kettős célja, hogy lehetővé teszi egy objektum frissítését az adatforrásból származó adatokkal, és ez az a mechanizmus, amellyel az ütközések feloldhatók. További információ: Módosítások mentése és Egyidejűség kezelése.

Az objektumok frissítésének sorrendje nem meghatározható.

A metódus meghívása Refresh után az objektum eredeti értékei mindig frissülnek az adatforrás értékével, de előfordulhat, hogy az aktuális értékek nem frissülnek az adatforrás értékével. Ez a RefreshMode. A StoreWins mód azt jelenti, hogy az objektumot frissíteni kell az adatforrás értékeinek megfelelően. Az ClientWins érték azt jelenti, hogy csak az objektumkörnyezet módosításai maradnak meg, még akkor is, ha az adatforrásban más változások is történtek.

Ha meg szeretné győződni arról, hogy egy objektumot adatforrásoldali logika frissített, meghívhatja a Refresh metódust az értékkel a StoreWins metódus meghívása SaveChanges után.

Lásd még

A következőre érvényes: