ObjectContext.SaveChanges Metod

Definition

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).

Gäller för