Поделиться через


ObjectContext.Refresh Метод

Определение

Обновляет определенные объекты в контексте объекта, используя данные из источника данных.

Перегрузки

Refresh(RefreshMode, IEnumerable)

Обновляет коллекцию объектов в контексте объекта, используя данные из источника данных.

Refresh(RefreshMode, Object)

Обновляет какой-либо объект в контексте объекта, используя данные из источника данных.

Комментарии

Объекты обновляются в недетерминированном порядке.

Refresh(RefreshMode, IEnumerable)

Обновляет коллекцию объектов в контексте объекта, используя данные из источника данных.

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)

Параметры

refreshMode
RefreshMode

Значение RefreshMode, которое указывает, перезаписываются ли изменения свойств в контексте объекта значениями свойств из источника данных.

collection
IEnumerable

Обновляемая коллекция объектов IEnumerable.

Исключения

collection имеет значение null.

Недопустимый параметр refreshMode.

Параметр collection пуст.

-или-

Объект не присоединен к контексту.

Комментарии

Этот метод имеет двойную цель— разрешить обновлять объекты в контексте объекта данными из источника данных и быть механизмом, с помощью которого можно разрешить конфликты. Дополнительные сведения см. в разделе Сохранение изменений и управление параллелизмом.

Объекты обновляются в недетерминированном порядке.

После Refresh вызова метода is исходные значения объекта всегда будут обновляться значением источника данных, но текущие значения могут быть обновлены или не обновлены с помощью значения источника данных. Это зависит от значения RefreshMode. Режим StoreWins означает, что объекты в коллекции должны быть обновлены в соответствии со значениями источника данных. ClientWins означает, что сохраняются только изменения в контексте объекта, даже если в источнике данных были внесены другие изменения.

Чтобы убедиться, что объекты были обновлены логикой на стороне источника данных, можно вызвать Refresh с StoreWins после вызова SaveChanges метода .

См. также раздел

Применяется к

Refresh(RefreshMode, Object)

Обновляет какой-либо объект в контексте объекта, используя данные из источника данных.

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)

Параметры

refreshMode
RefreshMode

Одно из значений RefreshMode, которое указывает, какой режим использовать для обновления диспетчера ObjectStateManager.

entity
Object

Обновляемый объект.

Исключения

collection имеет значение null.

Недопустимый параметр refreshMode.

Параметр collection пуст.

-или-

Объект не присоединен к контексту.

Примеры

В этом примере пытается сохранить изменения, что может привести к конфликту параллелизма. Затем показывается, как разрешить конфликт параллелизма путем обновления контекста объекта перед повторным сохранением изменений.

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

Комментарии

Refresh имеет двойную цель— разрешить обновление объекта с помощью данных из источника данных и быть механизмом, с помощью которого можно разрешить конфликты. Дополнительные сведения см. в разделе Сохранение изменений и управление параллелизмом.

Объекты обновляются в недетерминированном порядке.

Refresh После вызова метода исходные значения объекта всегда будут обновляться значением источника данных, но текущие значения могут быть обновлены или не обновлены с помощью значения источника данных. Это зависит от значения RefreshMode. Режим StoreWins означает, что объект должен быть обновлен в соответствии со значениями источника данных. Значение ClientWins означает, что сохраняются только изменения в контексте объекта, даже если в источнике данных были внесены другие изменения.

Чтобы убедиться, что объект был обновлен логикой на стороне источника данных, можно вызвать Refresh метод со значением StoreWinsSaveChanges после вызова метода .

См. также раздел

Применяется к