ObjectContext.SaveChanges Yöntem

Tanım

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.

Şunlara uygulanır