ObjectContext.SaveChanges Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Veri kaynağındaki tüm güncelleştirmeleri kalıcı hale alır.
Aşırı Yüklemeler
SaveChanges() |
Veri kaynağındaki tüm güncelleştirmeleri kalıcı hale getirmekte ve nesne bağlamında değişiklik izlemeyi sıfırlar. |
SaveChanges(Boolean) |
Geçersiz.
Veri kaynağındaki tüm güncelleştirmeleri kalıcı hale getirmekte ve isteğe bağlı olarak nesne bağlamında değişiklik izlemeyi sıfırlar. |
SaveChanges(SaveOptions) |
Veri kaynağındaki tüm güncelleştirmeleri belirtilen SaveOptionsile kalıcı hale getirmek için. |
SaveChanges()
Veri kaynağındaki tüm güncelleştirmeleri kalıcı hale getirmekte ve nesne bağlamında değişiklik izlemeyi sıfırlar.
public:
int SaveChanges();
public int SaveChanges ();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Döndürülenler
Çağrıldığında SaveChanges() , Modifiedveya Deleted durumundaki Addednesnelerin sayısı.
Özel durumlar
Veri kaynağında iyimser bir eşzamanlılık ihlali oluştu.
Örnekler
Bu örnek, eşzamanlılık çakışmasına neden olabilecek değişiklikleri kaydetmeye çalışır. Ardından, değişiklikleri yeniden kaydetmeden önce nesne bağlamını yenileyerek eşzamanlılık çakışmasının nasıl çözüleceğini gösterir.
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());
}
}
Açıklamalar
İstemcideki nesnelerin veri kaynağı tarafı mantığı tarafından güncelleştirildiğinden emin olmak için çağrısından sonra değerini kullanarak yöntemini çağırabilirsiniz RefreshSaveChanges.StoreWins Daha fazla bilgi için bkz. Değişiklikleri Kaydetme ve Eşzamanlılığı Yönetme.
SaveChanges bir işlem içinde çalışır. SaveChanges bu işlemi geri alır ve kirli ObjectStateEntry nesnelerden herhangi biri kalıcı hale getirilemezse bir özel durum oluşturur.
İyimser bir eşzamanlılık ihlali oluşursa, bir OptimisticConcurrencyException oluşturulur. İyimser eşzamanlılık ihlalini çözmek için bunu yakalayın, veya değeriyle StoreWins yöntemini çağırın Refresh ve sonra yeniden çağırınSaveChanges.ClientWins Daha fazla bilgi için bkz . Nasıl yapılır: Nesne Bağlamında Veri Eşzamanlılığını Yönetme.
Ayrıca bkz.
Şunlara uygulanır
SaveChanges(Boolean)
Dikkat
Use SaveChanges(SaveOptions options) instead.
Veri kaynağındaki tüm güncelleştirmeleri kalıcı hale getirmekte ve isteğe bağlı olarak nesne bağlamında değişiklik izlemeyi sıfırlar.
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
Parametreler
- acceptChangesDuringSave
- Boolean
Bu parametre istemci tarafı işlem desteği için gereklidir. ise true
, tüm nesnelerdeki değişiklik izleme işlemi tamamlandıktan sonra SaveChanges(Boolean) sıfırlanır. ise false
, yöntemini sonra AcceptAllChanges()SaveChanges(Boolean)çağırmanız gerekir.
Döndürülenler
Çağrıldığında SaveChanges() , Modifiedveya Deleted durumundaki Addednesnelerin sayısı.
- Öznitelikler
Özel durumlar
İyimser bir eşzamanlılık ihlali oluştu.
Açıklamalar
Bunun yerine yöntemini çağırın SaveChanges(SaveOptions) .
Şunlara uygulanır
SaveChanges(SaveOptions)
Veri kaynağındaki tüm güncelleştirmeleri belirtilen SaveOptionsile kalıcı hale getirmek için.
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
Parametreler
- options
- SaveOptions
SaveOptions İşlemin davranışını belirleyen bir değer.
Döndürülenler
Çağrıldığında SaveChanges() , Modifiedveya Deleted durumundaki Addednesnelerin sayısı.
Özel durumlar
İyimser bir eşzamanlılık ihlali oluştu.
Açıklamalar
Veri kaynağındaki SaveChanges değişiklikleri kaydetmeden önce çağrıldığından DetectChanges veya AcceptAllChanges veri kaynağındaki değişiklikleri kaydettikten sonra çağrıldığından emin olmak için bu özel aşırı yüklemesini kullanın.
Bu numaralandırma, üye değerlerinin bit düzeyinde birleşimini sağlayan bir öğesine sahiptir FlagsAttribute .
İstemcideki nesnelerin veri kaynağı tarafı mantığı tarafından güncelleştirildiğinden emin olmak için çağrısından sonra değerini kullanarak StoreWins yöntemini çağırabilirsiniz.RefreshSaveChanges SaveChanges yöntemi bir işlemde çalışır. SaveChanges bu işlemi geri alır ve kirli ObjectStateEntry nesnelerden herhangi biri kalıcı olamazsa bir özel durum oluşturur.
İyimser bir eşzamanlılık ihlali oluşursa, bir OptimisticConcurrencyException oluşturulur. İyimser bir eşzamanlılık ihlalini çözmek için bunu yakalayın, veya değerleriyle StoreWins yöntemini çağırın Refresh ve ardından yöntemini yeniden çağırınSaveChanges.ClientWins Daha fazla bilgi için bkz . Nasıl yapılır: Nesne Bağlamında Veri Eşzamanlılığını Yönetme.