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 ekler.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| 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 ekler. |
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() , AddedModifiedveya Deleted durumundaki nesne 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ı yaptıktan sonra değeriyle StoreWins yöntemini çağırabilirsiniz.RefreshSaveChanges
SaveChanges bir işlem içinde ç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 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
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ğırmalısınız.
Döndürülenler
Çağrıldığında SaveChanges() , AddedModifiedveya Deleted durumundaki nesne 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 ekler.
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() , AddedModifiedveya Deleted durumundaki nesne sayısı.
Özel durumlar
İyimser bir eşzamanlılık ihlali oluştu.
Açıklamalar
Veri kaynağındaki SaveChanges değişiklikleri kaydetmeden önce veya veri kaynağındaki AcceptAllChanges değişiklikleri kaydettikten sonra çağrılmadan önce çağrıldığından emin olmak DetectChanges için öğesinin bu özel aşırı yüklemesini kullanın.
Bu sabit listesi, üye değerlerinin bit düzeyinde birleşimine olanak tanıyan bir öğesine sahiptir FlagsAttribute .
İstemcideki nesnelerin veri kaynağı tarafı mantığı tarafından güncelleştirildiğinden emin olmak için yöntemini çağırdıktan Refresh sonra değeriyle StoreWins çağırabilirsiniz SaveChanges. 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 eşzamanlılık ihlalini çözmek için bunu yakalayın, veya değerleriyle StoreWins yöntemini çağırın Refresh ve sonra yöntemi yeniden çağırınSaveChanges.ClientWins