ObjectContext.SaveChanges 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.
Speichert alle Aktualisierungen der Datenquelle.
Überlädt
| Name | Beschreibung |
|---|---|
| SaveChanges() |
Behält alle Aktualisierungen der Datenquelle bei und setzt die Änderungsnachverfolgung im Objektkontext zurück. |
| SaveChanges(Boolean) |
Veraltet.
Behält alle Aktualisierungen der Datenquelle bei und setzt optional die Änderungsnachverfolgung im Objektkontext zurück. |
| SaveChanges(SaveOptions) |
Speichert alle Aktualisierungen der Datenquelle mit dem angegebenen SaveOptions. |
SaveChanges()
Behält alle Aktualisierungen der Datenquelle bei und setzt die Änderungsnachverfolgung im Objektkontext zurück.
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Gibt zurück
Die Anzahl der Objekte in einem Added, Modifiedoder Deleted Zustand, wenn SaveChanges() aufgerufen wurde.
Ausnahmen
In der Datenquelle ist eine optimistische Parallelitätsverletzung aufgetreten.
Beispiele
In diesem Beispiel wird versucht, Änderungen zu speichern, was zu einem Parallelitätskonflikt führen kann. Anschließend wird veranschaulicht, 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
Um sicherzustellen, dass Objekte auf dem Client von datenquellenseitiger Logik aktualisiert wurden, können Sie die Refresh Methode nach dem Aufruf mit dem StoreWins Wert aufrufen SaveChanges.
SaveChanges innerhalb einer Transaktion ausgeführt. SaveChanges führt einen Rollback dieser Transaktion durch und löst eine Ausnahme aus, wenn eines der geänderten ObjectStateEntry Objekte nicht beibehalten werden kann.
Wenn eine optimistische Parallelitätsverletzung aufgetreten ist, wird ein OptimisticConcurrencyException Fehler ausgelöst. Sie können eine optimistische Parallelitätsverletzung beheben, indem Sie sie abfangen, die Refresh Methode mit dem StoreWins Wert aufrufen ClientWins und dann erneut aufrufen SaveChanges .
Weitere Informationen
Gilt für:
SaveChanges(Boolean)
Achtung
Use SaveChanges(SaveOptions options) instead.
Behält alle Aktualisierungen der Datenquelle bei und setzt optional die Änderungsnachverfolgung im Objektkontext zurück.
public:
int SaveChanges(bool acceptChangesDuringSave);
public int SaveChanges(bool acceptChangesDuringSave);
[System.ComponentModel.Browsable(false)]
[System.Obsolete("Use SaveChanges(SaveOptions options) instead.")]
public int SaveChanges(bool acceptChangesDuringSave);
member this.SaveChanges : bool -> int
[<System.ComponentModel.Browsable(false)>]
[<System.Obsolete("Use SaveChanges(SaveOptions options) instead.")>]
member this.SaveChanges : bool -> int
Public Function SaveChanges (acceptChangesDuringSave As Boolean) As Integer
Parameter
- acceptChangesDuringSave
- Boolean
Dieser Parameter wird für die unterstützung clientseitiger Transaktionen benötigt. Wenn truedie Änderungsnachverfolgung für alle Objekte nach SaveChanges(Boolean) Abschluss zurückgesetzt wird. Wenn false, müssen Sie die AcceptAllChanges() Methode nach SaveChanges(Boolean).
Gibt zurück
Die Anzahl der Objekte in einem Added, Modifiedoder Deleted Zustand, wenn SaveChanges() aufgerufen wurde.
- Attribute
Ausnahmen
Es ist eine optimistische Parallelitätsverletzung aufgetreten.
Hinweise
Rufen Sie stattdessen die SaveChanges(SaveOptions) Methode auf.
Gilt für:
SaveChanges(SaveOptions)
Speichert alle Aktualisierungen der Datenquelle mit dem angegebenen SaveOptions.
public:
virtual int SaveChanges(System::Data::Objects::SaveOptions options);
public virtual int SaveChanges(System.Data.Objects.SaveOptions options);
abstract member SaveChanges : System.Data.Objects.SaveOptions -> int
override this.SaveChanges : System.Data.Objects.SaveOptions -> int
Public Overridable Function SaveChanges (options As SaveOptions) As Integer
Parameter
- options
- SaveOptions
Ein SaveOptions Wert, der das Verhalten des Vorgangs bestimmt.
Gibt zurück
Die Anzahl der Objekte in einem Added, Modifiedoder Deleted Zustand, wenn SaveChanges() aufgerufen wurde.
Ausnahmen
Es ist eine optimistische Parallelitätsverletzung aufgetreten.
Hinweise
Verwenden Sie diese spezielle Überladung, SaveChanges um entweder sicherzustellen, dass sie aufgerufen wird, DetectChanges bevor Sie Änderungen an der Datenquelle speichern oder AcceptAllChanges nach dem Speichern von Änderungen an der Datenquelle aufgerufen werden.
Diese Enumeration verfügt über eine FlagsAttribute bitweise Kombination ihrer Memberwerte.
Um sicherzustellen, dass Objekte auf dem Client von datenquellenseitiger Logik aktualisiert wurden, können Sie die Refresh Methode nach dem Aufruf mit dem StoreWins Wert aufrufen SaveChanges. Die SaveChanges Methode wird in einer Transaktion ausgeführt. SaveChanges führt einen Rollback für diese Transaktion durch und löst eine Ausnahme aus, wenn eines der geänderten ObjectStateEntry Objekte nicht beibehalten werden kann.
Wenn eine optimistische Parallelitätsverletzung aufgetreten ist, wird ein OptimisticConcurrencyException Fehler ausgelöst. Sie können eine optimistische Parallelitätsverletzung beheben, indem Sie sie abfangen, die Refresh Methode mit den StoreWins Werten aufrufen ClientWins und dann die SaveChanges Methode erneut aufrufen.