ObjectContext.SaveChanges Metoda

Definice

Zachová všechny aktualizace zdroje dat.

Přetížení

Name Description
SaveChanges()

Zachovává všechny aktualizace zdroje dat a resetuje sledování změn v kontextu objektu.

SaveChanges(Boolean)
Zastaralé.

Zachová všechny aktualizace zdroje dat a volitelně resetuje sledování změn v kontextu objektu.

SaveChanges(SaveOptions)

Zachová všechny aktualizace zdroje dat se zadaným SaveOptionskódem .

SaveChanges()

Zachovává všechny aktualizace zdroje dat a resetuje sledování změn v kontextu objektu.

public:
 int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer

Návraty

Početobjektůch AddedModifiedDeletedSaveChanges()

Výjimky

Ve zdroji dat došlo k porušení optimistické souběžnosti.

Příklady

Tento příklad se pokusí uložit změny, což může způsobit konflikt souběžnosti. Pak ukazuje, jak vyřešit konflikt souběžnosti aktualizací kontextu objektu před opětovným uložením změn.

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());
    }
}

Poznámky

Chcete-li zajistit, aby objekty v klientovi byly aktualizovány logikou na straně zdroje dat, můžete volat Refresh metodu StoreWins s hodnotou po volání SaveChanges.

SaveChanges funguje v rámci transakce. SaveChanges vrátí zpět danou transakci a vyvolá výjimku, pokud některý z nezašpiněných ObjectStateEntry objektů nelze zachovat.

Pokud došlo k porušení optimistické souběžnosti, vyvolá se chyba OptimisticConcurrencyException . Porušení optimistické souběžnosti můžete vyřešit tak, že ji zachytíte, zavoláte metodu RefreshStoreWins s hodnotou nebo ClientWins ji pak znovu zavoláte SaveChanges .

Viz také

Platí pro

SaveChanges(Boolean)

Upozornění

Use SaveChanges(SaveOptions options) instead.

Zachová všechny aktualizace zdroje dat a volitelně resetuje sledování změn v kontextu objektu.

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

Parametry

acceptChangesDuringSave
Boolean

Tento parametr je nutný pro podporu transakcí na straně klienta. Pokud truese sledování změn u všech objektů po dokončení resetuje SaveChanges(Boolean) . Pokud false, musíte zavolat metodu AcceptAllChanges() za SaveChanges(Boolean).

Návraty

Početobjektůch AddedModifiedDeletedSaveChanges()

Atributy

Výjimky

Došlo k porušení optimistické souběžnosti.

Poznámky

Místo toho volejte metodu SaveChanges(SaveOptions) .

Platí pro

SaveChanges(SaveOptions)

Zachová všechny aktualizace zdroje dat se zadaným SaveOptionskódem .

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

Parametry

options
SaveOptions

Hodnota SaveOptions , která určuje chování operace.

Návraty

Početobjektůch AddedModifiedDeletedSaveChanges()

Výjimky

Došlo k porušení optimistické souběžnosti.

Poznámky

Pomocí tohoto konkrétního SaveChanges přetížení se ujistěte, že DetectChanges je volána před uložením změn ve zdroji dat, nebo se AcceptAllChanges volá po uložení změn ve zdroji dat.

Tento výčet obsahuje FlagsAttribute bitové kombinace hodnot členů.

Chcete-li zajistit, aby objekty v klientovi byly aktualizovány logikou na straně zdroje dat, můžete metodu RefreshStoreWins volat s hodnotou po volání SaveChanges. Metoda SaveChanges pracuje v transakci. SaveChanges vrátí zpět danou transakci a vyvolá výjimku, pokud některý z nezašpiněných ObjectStateEntry objektů nelze zachovat.

Pokud došlo k porušení optimistické souběžnosti, vyvolá se chyba OptimisticConcurrencyException . Porušení optimistické souběžnosti můžete vyřešit zachycením metody, voláním Refresh metody s StoreWins hodnotami ClientWins a opětovným voláním SaveChanges metody.

Platí pro