ObjectContext.Refresh Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Aktualisiert bestimmte Objekte im Objektkontext mit Daten aus der Datenquelle.
Überlädt
| Name | Beschreibung |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Aktualisiert eine Auflistung von Objekten im Objektkontext mit Daten aus der Datenquelle. |
| Refresh(RefreshMode, Object) |
Aktualisiert ein Objekt im Objektkontext mit Daten aus der Datenquelle. |
Hinweise
Die Reihenfolge, in der Objekte aktualisiert werden, ist nicht deterministisch.
Refresh(RefreshMode, IEnumerable)
Aktualisiert eine Auflistung von Objekten im Objektkontext mit Daten aus der Datenquelle.
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)
Parameter
- refreshMode
- RefreshMode
Ein RefreshMode Wert, der angibt, ob Eigenschaftsänderungen im Objektkontext mit Eigenschaftswerten aus der Datenquelle überschrieben werden.
- collection
- IEnumerable
Eine IEnumerable Auflistung von Objekten, die aktualisiert werden sollen.
Ausnahmen
collection ist null.
refreshMode ist ungültig.
Hinweise
Diese Methode hat den doppelten Zweck, es Objekten im Objektkontext zu ermöglichen, mit Daten aus der Datenquelle zu aktualisieren, und es handelt sich um den Mechanismus, mit dem Konflikte gelöst werden können.
Die Reihenfolge, in der Objekte aktualisiert werden, ist nicht deterministisch.
Nach Refresh dem Aufruf werden die ursprünglichen Werte des Objekts immer mit dem Datenquellenwert aktualisiert, aber die aktuellen Werte werden möglicherweise oder nicht mit dem Datenquellenwert aktualisiert. Dies hängt vom Wert ab RefreshMode . Der StoreWins Modus bedeutet, dass die Objekte in der Auflistung aktualisiert werden sollen, um den Datenquellenwerten zu entsprechen. ClientWins bedeutet, dass nur die Änderungen im Objektkontext beibehalten werden, auch wenn andere Änderungen in der Datenquelle aufgetreten sind.
Um sicherzustellen, dass Objekte von datenquellenseitiger Logik aktualisiert wurden, können Sie nach dem Aufrufen der SaveChanges Methode aufrufen.RefreshStoreWins
Weitere Informationen
Gilt für:
Refresh(RefreshMode, Object)
Aktualisiert ein Objekt im Objektkontext mit Daten aus der Datenquelle.
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)
Parameter
- refreshMode
- RefreshMode
Einer der RefreshMode Werte, der angibt, welcher Modus für die Aktualisierung verwendet ObjectStateManagerwerden soll.
- entity
- Object
Das zu aktualisierende Objekt.
Ausnahmen
refreshMode ist ungültig.
Ein Objekt ist nicht an den Kontext angefügt.
Beispiele
In diesem Beispiel wird versucht, Änderungen zu speichern, und dies kann zu einem Parallelitätskonflikt führen. Anschließend wird gezeigt, wie der Parallelitätskonflikt behoben wird, indem der Objektkontext vor dem erneuten Speichern von Änderungen aktualisiert wird.
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());
}
}
Hinweise
Refresh hat den dualen Zweck, dass ein Objekt mit Daten aus der Datenquelle aktualisiert und der Mechanismus ist, mit dem Konflikte gelöst werden können.
Die Reihenfolge, in der Objekte aktualisiert werden, ist nicht deterministisch.
Nachdem die Refresh Methode aufgerufen wurde, werden die ursprünglichen Werte des Objekts immer mit dem Datenquellenwert aktualisiert, aber die aktuellen Werte werden möglicherweise oder nicht mit dem Datenquellenwert aktualisiert. Dies hängt von der RefreshMode. Der StoreWins Modus bedeutet, dass das Objekt aktualisiert werden soll, um den Datenquellenwerten zu entsprechen. Der ClientWins Wert bedeutet, dass nur die Änderungen im Objektkontext beibehalten werden, auch wenn in der Datenquelle andere Änderungen vorgenommen wurden.
Um sicherzustellen, dass ein Objekt von datenquellenseitiger Logik aktualisiert wurde, können Sie die Refresh Methode mit dem StoreWins Wert aufrufen, nachdem Sie die SaveChanges Methode aufgerufen haben.