次の方法で共有


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

戻り値

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

例外

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

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

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

注釈

クライアント上のオブジェクトがデータ ソース側のロジックで更新されるようにするには、Refresh の呼び出し後に StoreWins 値を指定して SaveChanges メソッドを呼び出します。 詳細については、「変更の 保存」と「コンカレンシーの管理」を参照してください。

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

オプティミスティック コンカレンシー違反が発生した場合は、OptimisticConcurrencyException がスローされます。 オプティミスティック コンカレンシー違反を解決するには、その違反をキャッチし、Refresh 値または StoreWins 値を指定して ClientWins メソッドを呼び出し、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 の場合は、AcceptAllChanges() の後に SaveChanges(Boolean) メソッドを呼び出す必要があります。

戻り値

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

属性

例外

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

注釈

代わりに メソッドを 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 値。

戻り値

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

例外

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

注釈

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

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

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

オプティミスティック コンカレンシー違反が発生した場合は、OptimisticConcurrencyException がスローされます。 オプティミスティック コンカレンシー違反を解決するには、その違反をキャッチし、Refresh 値または StoreWins 値を指定して ClientWins メソッドを呼び出し、SaveChanges メソッドを再度呼び出します。 詳細については、「 方法: オブジェクト コンテキストでデータコンカレンシーを管理する」を参照してください

適用対象