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 ile kalıcı hale getirmek için.SaveOptions

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 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ı olmazsa bir özel durum oluşturur.

İyimser bir eşzamanlılık ihlali oluştuysa, bir OptimisticConcurrencyException oluşturulur. İyimser bir 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

İstemci tarafı işlem desteği için bu parametre gereklidir. ise true, tüm nesnelerdeki değişiklik izleme işlemi tamamlandıktan sonra SaveChanges(Boolean) sıfırlanır. isefalse, yöntemini sonra SaveChanges(Boolean)çağırmanız AcceptAllChanges() gerekir.

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 ile kalıcı hale getirmek için.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

Parametreler

options
SaveOptions

SaveOptions İşlemin davranışını belirleyen 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 değişiklikleri kaydetmeden önce veya değişiklikleri veri kaynağında kaydettikten sonra çağrıldığını emin olmak DetectChanges için öğesinin AcceptAllChanges bu özel aşırı yüklemesini SaveChanges kullanın.

Bu sabit listesi, ü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ı yaptıktan sonra değeriyle 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ı olmazsa bir özel durum oluşturur.

İyimser bir eşzamanlılık ihlali oluştuysa, 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 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