ObjectContext.SaveChanges Metode

Definisi

Mempertahankan semua pembaruan pada sumber data.

Overload

Nama Deskripsi
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 untuk 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 saat 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 mengatasi konflik konkurensi dengan menyegarkan konteks objek sebelum menyimpan ulang 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.

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.

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 saat SaveChanges() dipanggil.

Atribut

Pengecualian

Pelanggaran konkurensi optimis telah terjadi.

Keterangan

Panggil metode sebagai gantinya SaveChanges(SaveOptions) .

Berlaku untuk

SaveChanges(SaveOptions)

Mempertahankan semua pembaruan untuk 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

Nilai SaveOptions yang menentukan perilaku operasi.

Mengembalikan

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

Pengecualian

Pelanggaran konkurensi optimis telah terjadi.

Keterangan

Gunakan kelebihan beban SaveChanges khusus ini untuk memastikan bahwa DetectChanges 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 ini 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 metode lagi SaveChanges .

Berlaku untuk