ObjectContext.SaveChanges メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ ソースに対するすべての更新を保持します。
オーバーロード
| 名前 | 説明 |
|---|---|
| SaveChanges() |
データ ソースに対するすべての更新を保持し、オブジェクト コンテキストで変更の追跡をリセットします。 |
| SaveChanges(Boolean) |
古い.
データ ソースに対するすべての更新を保持し、必要に応じてオブジェクト コンテキストで変更の追跡をリセットします。 |
| SaveChanges(SaveOptions) |
指定した SaveOptionsを使用して、データ ソースに対するすべての更新を保持します。 |
SaveChanges()
データ ソースに対するすべての更新を保持し、オブジェクト コンテキストで変更の追跡をリセットします。
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
返品
SaveChanges()が呼び出されたときの、Added、Modified、または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()が呼び出されたときの、Added、Modified、または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()が呼び出されたときの、Added、Modified、またはDeleted状態のオブジェクトの数。
例外
オプティミスティック コンカレンシー違反が発生しました。
注釈
この SaveChanges の特定のオーバーロードを使用して、データ ソースに変更を保存する前に DetectChanges が呼び出されるようにするか、データ ソースに変更を保存した後に AcceptAllChanges が呼び出されるようにします。
この列挙型には、メンバー値のビットごとの組み合わせを可能にする FlagsAttribute があります。
クライアント上のオブジェクトがデータ ソース側のロジックによって更新されたことを確認するには、SaveChangesを呼び出した後、StoreWins値を使用して Refresh メソッドを呼び出すことができます。 SaveChangesメソッドはトランザクションで動作します。 SaveChanges は、そのトランザクションをロールバックし、ダーティ ObjectStateEntry オブジェクトのいずれかを永続化できない場合は例外をスローします。
オプティミスティック コンカレンシー違反が発生した場合は、 OptimisticConcurrencyException がスローされます。 オプティミスティック コンカレンシー違反を解決するには、オプティミスティック コンカレンシー違反をキャッチし、StoreWins値またはClientWins値を使用してRefresh メソッドを呼び出してから、SaveChanges メソッドをもう一度呼び出します。