ObjectContext.SaveChanges メソッド

定義

データ ソースに対するすべての更新を保持します。

オーバーロード

名前 説明
SaveChanges()

データ ソースに対するすべての更新を保持し、オブジェクト コンテキストで変更の追跡をリセットします。

SaveChanges(Boolean)
古い.

データ ソースに対するすべての更新を保持し、必要に応じてオブジェクト コンテキストで変更の追跡をリセットします。

SaveChanges(SaveOptions)

指定した SaveOptionsを使用して、データ ソースに対するすべての更新を保持します。

SaveChanges()

データ ソースに対するすべての更新を保持し、オブジェクト コンテキストで変更の追跡をリセットします。

public:
 int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer

返品

SaveChanges()が呼び出されたときの、AddedModified、またはDeleted状態のオブジェクトの数。

例外

データ ソースでオプティミスティック コンカレンシー違反が発生しました。

この例では、変更の保存を試みます。これにより、コンカレンシーの競合が発生する可能性があります。 次に、変更を再保存する前にオブジェクト コンテキストを更新することで、コンカレンシーの競合を解決する方法を示します。

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());
    }
}

注釈

クライアント上のオブジェクトがデータ ソース側のロジックによって確実に更新されるようにするには、SaveChangesを呼び出した後、StoreWins値を使用して Refresh メソッドを呼び出します。

SaveChanges はトランザクション内で動作します。 SaveChanges は、そのトランザクションをロールバックし、ダーティ ObjectStateEntry オブジェクトのいずれかを永続化できない場合は例外をスローします。

オプティミスティック コンカレンシー違反が発生した場合は、 OptimisticConcurrencyException がスローされます。 オプティミスティック コンカレンシー違反を解決するには、オプティミスティック コンカレンシー違反をキャッチし、StoreWinsまたはClientWins値を使用してRefresh メソッドを呼び出してから、SaveChangesを再度呼び出します。

こちらもご覧ください

適用対象

SaveChanges(Boolean)

注意事項

Use SaveChanges(SaveOptions options) instead.

データ ソースに対するすべての更新を保持し、必要に応じてオブジェクト コンテキストで変更の追跡をリセットします。

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

パラメーター

acceptChangesDuringSave
Boolean

このパラメーターは、クライアント側トランザクションのサポートに必要です。 true場合、すべてのオブジェクトの変更の追跡は、SaveChanges(Boolean)の完了後にリセットされます。 false場合は、SaveChanges(Boolean)後に AcceptAllChanges() メソッドを呼び出す必要があります。

返品

SaveChanges()が呼び出されたときの、AddedModified、またはDeleted状態のオブジェクトの数。

属性

例外

オプティミスティック コンカレンシー違反が発生しました。

注釈

代わりに、 SaveChanges(SaveOptions) メソッドを呼び出します。

適用対象

SaveChanges(SaveOptions)

指定した 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

パラメーター

options
SaveOptions

操作の動作を決定する SaveOptions 値。

返品

SaveChanges()が呼び出されたときの、AddedModified、またはDeleted状態のオブジェクトの数。

例外

オプティミスティック コンカレンシー違反が発生しました。

注釈

この SaveChanges の特定のオーバーロードを使用して、データ ソースに変更を保存する前に DetectChanges が呼び出されるようにするか、データ ソースに変更を保存した後に AcceptAllChanges が呼び出されるようにします。

この列挙型には、メンバー値のビットごとの組み合わせを可能にする FlagsAttribute があります。

クライアント上のオブジェクトがデータ ソース側のロジックによって更新されたことを確認するには、SaveChangesを呼び出した後、StoreWins値を使用して Refresh メソッドを呼び出すことができます。 SaveChangesメソッドはトランザクションで動作します。 SaveChanges は、そのトランザクションをロールバックし、ダーティ ObjectStateEntry オブジェクトのいずれかを永続化できない場合は例外をスローします。

オプティミスティック コンカレンシー違反が発生した場合は、 OptimisticConcurrencyException がスローされます。 オプティミスティック コンカレンシー違反を解決するには、オプティミスティック コンカレンシー違反をキャッチし、StoreWins値またはClientWins値を使用してRefresh メソッドを呼び出してから、SaveChanges メソッドをもう一度呼び出します。

適用対象