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
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 durch Eigenschaftswerte aus der Datenquelle überschrieben werden.
- collection
- IEnumerable
Eine IEnumerable-Auflistung von zu aktualisierenden Objekten.
Ausnahmen
collection
ist null
.
refreshMode
ist nicht gültig.
Hinweise
Diese Methode hat den doppelten Zweck, zu ermöglichen, dass Objekte im Objektkontext mit Daten aus der Datenquelle aktualisiert werden können, und als Mechanismus, mit dem Konflikte aufgelöst werden können. Weitere Informationen finden Sie unter Speichern von Änderungen und Verwalten von Parallelität.
Die Reihenfolge, in der Objekte aktualisiert werden, ist nicht deterministisch.
Nachdem Refresh aufgerufen wurde, werden die ursprünglichen Werte des Objekts immer mit dem Datenquellenwert aktualisiert, aber die aktuellen Werte werden möglicherweise mit dem Datenquellenwert aktualisiert. Dies ist abhängig vom RefreshMode-Wert. Der StoreWins Modus bedeutet, dass die Objekte in der Auflistung so aktualisiert werden müssen, dass sie mit den Datenquellenwerten übereinstimmen. ClientWins bedeutet, dass nur die Änderungen im Objektkontext beibehalten werden, auch wenn andere Änderungen in der Datenquelle vorgenommen wurden.
Um sicherzustellen, dass Objekte von der datenquellenseitigen Logik aktualisiert wurden, können Sie mit StoreWins aufrufenRefresh, nachdem Sie die SaveChanges -Methode aufgerufen haben.
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 den Modus zum Aktualisieren des ObjectStateManager angibt.
- entity
- Object
Das zu aktualisierende Objekt.
Ausnahmen
collection
ist null
.
refreshMode
ist nicht gültig.
Beispiele
In diesem Beispiel wird versucht, Änderungen zu speichern, was zu einem Parallelitätskonflikt führen kann. Anschließend wird gezeigt, wie der Parallelitätskonflikt gelöst wird, indem der Objektkontext aktualisiert wird, bevor die Änderungen erneut gespeichert werden.
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 doppelten Zweck, ein Objekt mit Daten aus der Datenquelle zu aktualisieren und der Mechanismus zu sein, mit dem Konflikte gelöst werden können. Weitere Informationen finden Sie unter Speichern von Änderungen und Verwalten von Parallelität.
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 mit dem Datenquellenwert aktualisiert. Dies ist abhängig vom RefreshMode. Der StoreWins Modus bedeutet, dass das Objekt so aktualisiert werden sollte, dass es den Datenquellenwerten entspricht. Der ClientWins Wert bedeutet, dass nur die Änderungen im Objektkontext beibehalten werden, auch wenn andere Änderungen an der Datenquelle vorgenommen wurden.
Um sicherzustellen, dass ein Objekt von der datenquellenseitigen Logik aktualisiert wurde, können Sie die Refresh Methode mit dem StoreWins Wert aufrufen, nachdem Sie die SaveChanges -Methode aufgerufen haben.