ObjectContext.SaveChanges Yöntem

Tanım

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

Şunlara uygulanır