ObjectContext.SaveChanges Methode

Definitie

Alle updates voor de gegevensbron blijven behouden.

Overloads

Name Description
SaveChanges()

Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen opnieuw instellen in de objectcontext.

SaveChanges(Boolean)
Verouderd.

Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen in de objectcontext optioneel opnieuw instellen.

SaveChanges(SaveOptions)

Bewaart alle updates voor de gegevensbron met de opgegeven SaveOptions.

SaveChanges()

Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen opnieuw instellen in de objectcontext.

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

Retouren

Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.

Uitzonderingen

Er is een optimistische gelijktijdigheidsfout opgetreden in de gegevensbron.

Voorbeelden

In dit voorbeeld wordt geprobeerd wijzigingen op te slaan, wat een gelijktijdigheidsconflict kan veroorzaken. Vervolgens wordt gedemonstreerd hoe u het gelijktijdigheidsconflict kunt oplossen door de objectcontext te vernieuwen voordat u wijzigingen opnieuw opslaat.

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

Opmerkingen

Om ervoor te zorgen dat objecten op de client zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u het aanroept SaveChanges. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.

SaveChanges werkt binnen een transactie. SaveChanges zal die transactie terugdraaien en een uitzondering genereren als een van de vuile ObjectStateEntry objecten niet kan worden bewaard.

Als er een optimistische gelijktijdigheidsschending is opgetreden, wordt er een OptimisticConcurrencyException gegenereerd. U kunt een optimistische gelijktijdigheidsschending oplossen door deze te vangen, de Refresh methode aan te roepen met de StoreWins of ClientWins waarde en vervolgens opnieuw aan te roepen SaveChanges . Zie Procedure: Gelijktijdigheid van gegevens beheren in de objectcontext voor meer informatie.

Zie ook

Van toepassing op

SaveChanges(Boolean)

Let op

Use SaveChanges(SaveOptions options) instead.

Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen in de objectcontext optioneel opnieuw instellen.

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

Parameters

acceptChangesDuringSave
Boolean

Deze parameter is nodig voor transactieondersteuning aan de clientzijde. Als true, wordt het bijhouden van wijzigingen voor alle objecten opnieuw ingesteld nadat SaveChanges(Boolean) deze is voltooid. Als false, moet u de AcceptAllChanges() methode aanroepen na SaveChanges(Boolean).

Retouren

Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.

Kenmerken

Uitzonderingen

Er is een optimistische gelijktijdigheidsfout opgetreden.

Opmerkingen

Roep in plaats daarvan de SaveChanges(SaveOptions) methode aan.

Van toepassing op

SaveChanges(SaveOptions)

Bewaart alle updates voor de gegevensbron met de opgegeven 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

Parameters

options
SaveOptions

Een SaveOptions waarde die het gedrag van de bewerking bepaalt.

Retouren

Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.

Uitzonderingen

Er is een optimistische gelijktijdigheidsfout opgetreden.

Opmerkingen

Gebruik deze specifieke overbelasting om SaveChanges ervoor te zorgen dat deze DetectChanges wordt aangeroepen voordat u wijzigingen in de gegevensbron opslaat of die AcceptAllChanges wordt aangeroepen nadat u wijzigingen in de gegevensbron hebt opgeslagen.

Deze opsomming heeft een FlagsAttribute opsomming die een bitwise combinatie van de ledenwaarden toestaat.

Om ervoor te zorgen dat objecten op de client zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u het aanroept SaveChanges. De SaveChanges methode werkt in een transactie. SaveChanges zal die transactie terugdraaien en een uitzondering genereren als een van de vuile ObjectStateEntry objecten niet kan worden bewaard.

Als er een optimistische gelijktijdigheidsschending is opgetreden, wordt er een OptimisticConcurrencyException gegenereerd. U kunt een optimistische gelijktijdigheidsschending oplossen door deze te vangen, de Refresh methode aan te roepen met de StoreWins of ClientWins waarden en vervolgens de SaveChanges methode opnieuw aan te roepen. Zie Procedure: Gelijktijdigheid van gegevens beheren in de objectcontext voor meer informatie.

Van toepassing op