ObjectContext.SaveChanges Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Bevarar alla uppdateringar av datakällan.
Överlagringar
| Name | Description |
|---|---|
| SaveChanges() |
Bevarar alla uppdateringar av datakällan och återställer ändringsspårning i objektkontexten. |
| SaveChanges(Boolean) |
Föråldrad.
Bevarar alla uppdateringar av datakällan och återställer eventuellt ändringsspårning i objektkontexten. |
| SaveChanges(SaveOptions) |
Bevarar alla uppdateringar av datakällan med angiven SaveOptions. |
SaveChanges()
Bevarar alla uppdateringar av datakällan och återställer ändringsspårning i objektkontexten.
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Returer
Antalet objekt i tillståndet Added, Modifiedeller Deleted när SaveChanges() anropades.
Undantag
En optimistisk samtidighetsöverträdelse har inträffat i datakällan.
Exempel
Det här exemplet försöker spara ändringar, vilket kan orsaka en samtidighetskonflikt. Sedan visar den hur du löser samtidighetskonflikten genom att uppdatera objektkontexten innan ändringar sparas på nytt.
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());
}
}
Kommentarer
För att säkerställa att objekt på klienten har uppdaterats av datakälllogik kan du anropa Refresh metoden med StoreWins värdet när du anropar SaveChanges. Mer information finns i Spara ändringar och hantera samtidighet.
SaveChanges fungerar inom en transaktion. SaveChanges återställer transaktionen och utlöser ett undantag om något av de smutsiga ObjectStateEntry objekten inte kan sparas.
Om en optimistisk samtidighetsöverträdelse har inträffat utlöses en OptimisticConcurrencyException . Du kan lösa en optimistisk samtidighetsöverträdelse genom att fånga den Refresh , anropa metoden med StoreWins värdet eller ClientWins och sedan anropa SaveChanges igen. Mer information finns i How to: Manage Data Concurrency in the Object Context (Hantera datakonkurrens i objektkontexten).
Se även
Gäller för
SaveChanges(Boolean)
Varning
Use SaveChanges(SaveOptions options) instead.
Bevarar alla uppdateringar av datakällan och återställer eventuellt ändringsspårning i objektkontexten.
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
Parametrar
- acceptChangesDuringSave
- Boolean
Den här parametern behövs för transaktionsstöd på klientsidan. Om trueåterställs ändringsspårningen för alla objekt när SaveChanges(Boolean) den har slutförts. Om falsemåste du anropa AcceptAllChanges() metoden efter SaveChanges(Boolean).
Returer
Antalet objekt i tillståndet Added, Modifiedeller Deleted när SaveChanges() anropades.
- Attribut
Undantag
En optimistisk samtidighetsöverträdelse har inträffat.
Kommentarer
SaveChanges(SaveOptions) Anropa metoden i stället.
Gäller för
SaveChanges(SaveOptions)
Bevarar alla uppdateringar av datakällan med angiven 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
Parametrar
- options
- SaveOptions
Ett SaveOptions värde som avgör hur åtgärden fungerar.
Returer
Antalet objekt i tillståndet Added, Modifiedeller Deleted när SaveChanges() anropades.
Undantag
En optimistisk samtidighetsöverträdelse har inträffat.
Kommentarer
Använd den här specifika överlagringen för SaveChanges att antingen se till att anropas DetectChanges innan du sparar ändringar i datakällan eller som AcceptAllChanges anropas när du har sparat ändringar i datakällan.
Den här uppräkningen har en FlagsAttribute som möjliggör en bitvis kombination av dess medlemsvärden.
För att säkerställa att objekt på klienten har uppdaterats av logiken på datakällans sida kan du anropa Refresh metoden med StoreWins värdet när du anropar SaveChanges. Metoden SaveChanges fungerar i en transaktion. SaveChanges återställer transaktionen och utlöser ett undantag om något av de smutsiga ObjectStateEntry objekten inte kan bevaras.
Om en optimistisk samtidighetsöverträdelse har inträffat utlöses en OptimisticConcurrencyException . Du kan lösa en optimistisk samtidighetsöverträdelse genom att fånga den Refresh , anropa metoden med StoreWins värdena eller ClientWins och sedan anropa SaveChanges metoden igen. Mer information finns i How to: Manage Data Concurrency in the Object Context (Hantera datakonkurrens i objektkontexten).