ObjectContext.Refresh Metoda

Definicja

Aktualizacje określonych obiektów w kontekście obiektu z danymi ze źródła danych.

Przeciążenia

Refresh(RefreshMode, IEnumerable)

Aktualizacje kolekcję obiektów w kontekście obiektu z danymi ze źródła danych.

Refresh(RefreshMode, Object)

Aktualizacje obiekt w kontekście obiektu z danymi ze źródła danych.

Uwagi

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

Refresh(RefreshMode, IEnumerable)

Aktualizacje kolekcję obiektów w kontekście obiektu z danymi 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

RefreshMode Wartość wskazująca, 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

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

Wyjątki

collection to null.

refreshMode jest nieprawidłowa.

collection jest pusty.

-lub-

Obiekt nie jest dołączony do kontekstu.

Uwagi

Ta metoda ma podwójny cel 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 nieokreślona.

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 mogą być aktualizowane przy użyciu wartości źródła danych. Zależy to od RefreshMode wartości. Tryb StoreWins oznacza, że obiekty w kolekcji powinny być aktualizowane tak, 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żesz wywołać Refresh metodę StoreWinsSaveChanges za pomocą metody .

Zobacz też

Dotyczy

Refresh(RefreshMode, Object)

Aktualizacje obiekt w kontekście obiektu z danymi 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 Jedną z wartości określających tryb, który ma być używany do odświeżania elementu ObjectStateManager.

entity
Object

Obiekt do odświeżenia.

Wyjątki

collection to null.

refreshMode jest nieprawidłowa.

collection jest pusty.

-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ójny cel zezwalania na odświeżanie 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 nieokreślona.

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żesz wywołać metodę z wartością StoreWins po wywołaniu RefreshSaveChanges metody .

Zobacz też

Dotyczy