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 вызова исходные значения объекта всегда будут обновляться со значением источника данных, но текущие значения могут быть изменены со значением источника данных. Это зависит от 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

Объект, который необходимо обновить.

Исключения

refreshMode недопустимо.

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

Примеры

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

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 метод со StoreWins значением после вызова SaveChanges метода.

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

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