Share via


ObjectContext.SaveChanges Metode

Definisi

Mempertahankan semua pembaruan pada sumber data.

Overload

SaveChanges()

Mempertahankan semua pembaruan pada sumber data dan mengatur ulang pelacakan perubahan dalam konteks objek.

SaveChanges(Boolean)
Kedaluwarsa.

Mempertahankan semua pembaruan pada sumber data dan secara opsional mengatur ulang pelacakan perubahan dalam konteks objek.

SaveChanges(SaveOptions)

Mempertahankan semua pembaruan pada sumber data dengan yang ditentukan SaveOptions.

SaveChanges()

Mempertahankan semua pembaruan pada sumber data dan mengatur ulang pelacakan perubahan dalam konteks objek.

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

Mengembalikan

Jumlah objek dalam Addedstatus , , Modifiedatau Deleted ketika SaveChanges() dipanggil.

Pengecualian

Pelanggaran konkurensi optimis telah terjadi di sumber data.

Contoh

Contoh ini mencoba menyimpan perubahan, yang dapat menyebabkan konflik konkurensi. Kemudian, ini menunjukkan cara menyelesaikan konflik konkurensi dengan menyegarkan konteks objek sebelum menyimpan kembali perubahan.

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

Keterangan

Untuk memastikan bahwa objek pada klien telah diperbarui oleh logika sisi sumber data, Anda dapat memanggil Refresh metode dengan StoreWins nilai setelah Anda memanggil SaveChanges. Untuk informasi selengkapnya, lihat Menyimpan Perubahan dan Mengelola Konkurensi.

SaveChanges beroperasi dalam transaksi. SaveChanges akan mengembalikan transaksi tersebut dan melemparkan pengecualian jika salah satu objek kotor ObjectStateEntry tidak dapat dipertahankan.

Jika pelanggaran konkurensi optimis telah terjadi, akan OptimisticConcurrencyException dilemparkan. Anda dapat mengatasi pelanggaran konkurensi optimis dengan menangkapnya, memanggil Refresh metode dengan StoreWins nilai atau ClientWins , lalu memanggil SaveChanges lagi. Untuk informasi selengkapnya, lihat Cara: Mengelola Konkurensi Data dalam Konteks Objek.

Lihat juga

Berlaku untuk

SaveChanges(Boolean)

Perhatian

Use SaveChanges(SaveOptions options) instead.

Mempertahankan semua pembaruan pada sumber data dan secara opsional mengatur ulang pelacakan perubahan dalam konteks objek.

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

Parameter

acceptChangesDuringSave
Boolean

Parameter ini diperlukan untuk dukungan transaksi sisi klien. Jika true, pelacakan perubahan pada semua objek diatur ulang setelah SaveChanges(Boolean) selesai. Jika false, Anda harus memanggil AcceptAllChanges() metode setelah SaveChanges(Boolean).

Mengembalikan

Jumlah objek dalam Addedstatus , , Modifiedatau Deleted ketika SaveChanges() dipanggil.

Atribut

Pengecualian

Pelanggaran konkurensi optimis telah terjadi.

Keterangan

Panggil metode sebagai gantinya SaveChanges(SaveOptions) .

Berlaku untuk

SaveChanges(SaveOptions)

Mempertahankan semua pembaruan pada sumber data dengan yang ditentukan 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

Parameter

options
SaveOptions

SaveOptions Nilai yang menentukan perilaku operasi.

Mengembalikan

Jumlah objek dalam Addedstatus , , Modifiedatau Deleted ketika SaveChanges() dipanggil.

Pengecualian

Pelanggaran konkurensi optimis telah terjadi.

Keterangan

Gunakan kelebihan beban SaveChanges khusus ini untuk memastikan bahwa DetectChanges itu dipanggil sebelum Anda menyimpan perubahan ke sumber data atau yang AcceptAllChanges dipanggil setelah Anda menyimpan perubahan ke sumber data.

Enumerasi ini memiliki FlagsAttribute yang memungkinkan kombinasi bitwise dari nilai anggotanya.

Untuk memastikan bahwa objek pada klien telah diperbarui oleh logika sisi sumber data, Anda dapat memanggil Refresh metode dengan StoreWins nilai setelah Anda memanggil SaveChanges. Metode beroperasi SaveChanges dalam transaksi. SaveChanges akan menggulung balik transaksi itu dan melemparkan pengecualian jika salah satu objek kotor ObjectStateEntry tidak dapat dipertahankan.

Jika pelanggaran konkurensi optimis telah terjadi, akan OptimisticConcurrencyException dilemparkan. Anda dapat mengatasi pelanggaran konkurensi optimis dengan menangkapnya, memanggil Refresh metode dengan StoreWins nilai atau ClientWins , lalu memanggil SaveChanges metode lagi. Untuk informasi selengkapnya, lihat Cara: Mengelola Konkurensi Data dalam Konteks Objek.

Berlaku untuk