ObjectContext.Refresh Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.
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.
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 .