ObjectContext.SaveChanges Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.