ObjectContext.SaveChanges Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Megőrzi az adatforrás összes frissítését.
Túlterhelések
| Name | Description |
|---|---|
| SaveChanges() |
Megőrzi az adatforrás összes frissítését, és visszaállítja a változáskövetést az objektumkörnyezetben. |
| SaveChanges(Boolean) |
Elavult.
Megőrzi az adatforrás összes frissítését, és opcionálisan visszaállítja a változáskövetést az objektumkörnyezetben. |
| SaveChanges(SaveOptions) |
Az adatforrás minden frissítését megőrzi a megadott SaveOptions. |
SaveChanges()
Megőrzi az adatforrás összes frissítését, és visszaállítja a változáskövetést az objektumkörnyezetben.
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Válaszok
Az objektumok száma egy Added, Modifiedvagy Deleted állapotban, amikor SaveChanges() meghívták.
Kivételek
Optimista egyidejűségi szabálysértés történt az adatforrásban.
Példák
Ez a példa megpróbálja menteni a módosításokat, amelyek egyidejűségi ütközést okozhatnak. Ezután bemutatja, hogyan oldhatja fel az egyidejűségi ütközést az objektumkörnyezet frissítésével a módosítások újbóli mentése előtt.
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());
}
}
Megjegyzések
Ha meg szeretné győződni arról, hogy az ügyfél objektumait adatforrásoldali logika frissítette, meghívhatja a Refresh metódust az értékkel a StoreWins hívás SaveChangesután. További információ: Módosítások mentése és Egyidejűség kezelése.
SaveChanges egy tranzakción belül működik. SaveChanges A rendszer visszaállítja a tranzakciót, és kivételt okoz, ha a piszkos ObjectStateEntry objektumok egyike sem őrizhető meg.
Ha optimista egyidejűségi szabálysértés történt, OptimisticConcurrencyException a hiba bekövetkezik. Az optimista egyidejűségi szabálysértéseket úgy oldhatja meg, hogy elfogja, meghívja a Refresh metódust az értékével vagy StoreWins értékévelClientWins, majd újra meghívjaSaveChanges. További információ : Az adatok egyidejűségének kezelése az objektumkörnyezetben.
Lásd még
A következőre érvényes:
SaveChanges(Boolean)
Figyelemfelhívás
Use SaveChanges(SaveOptions options) instead.
Megőrzi az adatforrás összes frissítését, és opcionálisan visszaállítja a változáskövetést az objektumkörnyezetben.
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
Paraméterek
- acceptChangesDuringSave
- Boolean
Ez a paraméter az ügyféloldali tranzakciók támogatásához szükséges. Ha truea módosításkövetés az összes objektumon alaphelyzetbe áll a befejezés után SaveChanges(Boolean) . Ha false, akkor a metódust AcceptAllChanges()utána SaveChanges(Boolean) kell meghívnia.
Válaszok
Az objektumok száma egy Added, Modifiedvagy Deleted állapotban, amikor SaveChanges() meghívták.
- Attribútumok
Kivételek
Optimista egyidejűségi szabálysértés történt.
Megjegyzések
Hívja meg inkább a metódust SaveChanges(SaveOptions) .
A következőre érvényes:
SaveChanges(SaveOptions)
Az adatforrás minden frissítését megőrzi a megadott 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
Paraméterek
- options
- SaveOptions
A SaveOptions művelet viselkedését meghatározó érték.
Válaszok
Az objektumok száma egy Added, Modifiedvagy Deleted állapotban, amikor SaveChanges() meghívták.
Kivételek
Optimista egyidejűségi szabálysértés történt.
Megjegyzések
Ezzel a speciális túlterhelési SaveChanges műveletekkel győződjön meg arról, hogy DetectChanges az adatforrás AcceptAllChanges módosításainak mentése előtt vagy az adatforrás módosításainak mentése után van meghívva.
Ez az enumerálás olyan értékkel FlagsAttribute rendelkezik, amely lehetővé teszi a tagértékek bitenkénti kombinációját.
Ha meg szeretné győződni arról, hogy az ügyfél objektumait adatforrásoldali logika frissítette, meghívhatja a Refresh metódust az értékkel a StoreWins hívás SaveChangesután. A SaveChanges metódus tranzakcióban működik. SaveChanges a rendszer visszaállítja a tranzakciót, és kivételt okoz, ha a piszkos ObjectStateEntry objektumok egyikét sem lehet megőrzeni.
Ha optimista egyidejűségi szabálysértés történt, OptimisticConcurrencyException a hiba bekövetkezik. Az optimista egyidejűségi szabálysértéseket úgy oldhatja meg, hogy elfogja, meghívja a Refresh metódust az értékekkel vagy StoreWins értékekkelClientWins, majd újra meghívja a metódustSaveChanges. További információ : Az adatok egyidejűségének kezelése az objektumkörnyezetben.