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
.
Комментарии
Этот метод имеет двойную цель— разрешить обновлять объекты в контексте объекта данными из источника данных и быть механизмом, с помощью которого можно разрешить конфликты. Дополнительные сведения см. в разделе Сохранение изменений и управление параллелизмом.
Объекты обновляются в недетерминированном порядке.
После 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
.
Примеры
В этом примере пытается сохранить изменения, что может привести к конфликту параллелизма. Затем показывается, как разрешить конфликт параллелизма путем обновления контекста объекта перед повторным сохранением изменений.
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 после вызова метода .