ObjectContext.SaveChanges Metódus

Definíció

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.

A következőre érvényes: