Udostępnij za pośrednictwem


ObjectContext.Refresh Metoda

Definicja

Aktualizuje określone obiekty w kontekście obiektu przy użyciu danych ze źródła danych.

Przeciążenia

Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekcję obiektów w kontekście obiektu przy użyciu danych ze źródła danych.

Refresh(RefreshMode, Object)

Aktualizuje obiekt w kontekście obiektu przy użyciu danych ze źródła danych.

Uwagi

Kolejność odświeżania obiektów jest niedeterministyczna.

Refresh(RefreshMode, IEnumerable)

Aktualizuje kolekcję obiektów w kontekście obiektu przy użyciu danych ze źródła danych.

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

Wartość wskazująca RefreshMode , czy zmiany właściwości w kontekście obiektu są zastępowane wartościami właściwości ze źródła danych.

collection
IEnumerable

IEnumerable Kolekcja obiektów do odświeżenia.

Wyjątki

collection to null.

refreshMode jest nieprawidłowy.

collection jest pusta.

-lub-

Obiekt nie jest dołączony do kontekstu.

Uwagi

Ta metoda ma podwójne przeznaczenie zezwalania na odświeżanie obiektów w kontekście obiektu przy użyciu danych ze źródła danych i jest mechanizmem, za pomocą którego można rozwiązać konflikty. Aby uzyskać więcej informacji, zobacz Zapisywanie zmian i zarządzanie współbieżnością.

Kolejność odświeżania obiektów jest niedeterministyczna.

Po Refresh wywołaniu oryginalne wartości obiektu będą zawsze aktualizowane przy użyciu wartości źródła danych, ale bieżące wartości mogą lub nie zostaną zaktualizowane przy użyciu wartości źródła danych. Zależy to od RefreshMode wartości. Tryb StoreWins oznacza, że obiekty w kolekcji powinny zostać zaktualizowane, aby były zgodne z wartościami źródła danych. ClientWins oznacza, że tylko zmiany w kontekście obiektu zostaną utrwalone, nawet jeśli w źródle danych wprowadzono inne zmiany.

Aby upewnić się, że obiekty zostały zaktualizowane przez logikę po stronie źródła danych, można wywołać Refresh metodę SaveChanges za pomocą StoreWins metody .

Zobacz też

Dotyczy

Refresh(RefreshMode, Object)

Aktualizuje obiekt w kontekście obiektu przy użyciu danych ze źródła danych.

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

RefreshMode Jedna z wartości określających tryb używany do odświeżania elementu ObjectStateManager.

entity
Object

Obiekt do odświeżenia.

Wyjątki

collection to null.

refreshMode jest nieprawidłowy.

collection jest pusta.

-lub-

Obiekt nie jest dołączony do kontekstu.

Przykłady

Ten przykład próbuje zapisać zmiany i może to spowodować konflikt współbieżności. Następnie pokazano, jak rozwiązać konflikt współbieżności, odświeżając kontekst obiektu przed ponownym zapisaniem zmian.

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

Uwagi

Refresh ma podwójne przeznaczenie umożliwiające odświeżanie obiektu danymi ze źródła danych i mechanizmem, za pomocą którego można rozwiązać konflikty. Aby uzyskać więcej informacji, zobacz Zapisywanie zmian i zarządzanie współbieżnością.

Kolejność odświeżania obiektów jest niedeterministyczna.

Po wywołaniu Refresh metody oryginalne wartości obiektu będą zawsze aktualizowane przy użyciu wartości źródła danych, ale bieżące wartości mogą lub nie zostaną zaktualizowane przy użyciu wartości źródła danych. Zależy to od .RefreshMode Tryb StoreWins oznacza, że obiekt powinien zostać zaktualizowany tak, aby był zgodny z wartościami źródła danych. Wartość ClientWins oznacza, że tylko zmiany w kontekście obiektu zostaną utrwalone, nawet jeśli w źródle danych wprowadzono inne zmiany.

Aby upewnić się, że obiekt został zaktualizowany przez logikę po stronie źródła danych, można wywołać Refresh metodę z wartością StoreWins po wywołaniu SaveChanges metody .

Zobacz też

Dotyczy