DataSource for Entity Framework for WPF/Silverlight
BulkChanges メソッド
使用例 

C1.Data 名前空間 > ClientCacheBase クラス : BulkChanges メソッド
エンティティで変更を行うデリゲート。
エンティティに対する大規模な変更をグループ化するため、およびエンティティの状態を手作業で明示的に変更できるようにするために使用されます。
シンタックス
'宣言
 
Public Sub BulkChanges( _
   ByVal makeChanges As System.Action _
) 
public void BulkChanges( 
   System.Action makeChanges
)

パラメータ

makeChanges
エンティティで変更を行うデリゲート。
解説

クライアント側のキャッシュの内部状態およびキャッシュに基づくすべての既存の クライアントビューは、 そのまま維持され、指定された makeChangesの実行中は更新されません。 デリゲートが実行(複数のエンティティの変更)を完了すると、 クライアント側キャッシュの内部状態が復元され、クライアントビューは、 デリゲートの実行中にエンティティに加えられた変更を反映するように更新(維持)されます。

このメソッドの呼び出しを検討する必要があるシナリオは、主に次の2つです。

  1. 複数のエンティティに対して多くの変更を行う場合にこのメソッドを使用すると、パフォーマンスを向上させることができます。 これは、変更処理が後で実行されるようにし、変更が行われるたびに処理が行われるのではなく、すべての変更が行われた後で1回だけ行われるためです。 変更の量によっては、処理速度がかなり向上する可能性があります。
  2. 次のいずれかのメソッドを呼び出してエンティティの状態を変更する必要がある場合は、このメソッドを使用しなければなりません。
    • System.Data.Objects.ObjectStateEntry.ChangeState/SetModified/AcceptChanges
    • System.Data.Objects.ObjectContext.AcceptAllChanges
    • System.ServiceModel.DomainServices.Client.DomainContext.RejectChanges
    • System.ServiceModel.DomainServices.Client.Entity.AcceptChanges/RejectChanges
    • System.ServiceModel.DomainServices.Client.EntitySet.AcceptChanges/RejectChanges
    • System.Windows.Controls.DomainDataSource.RejectChanges
これらのメソッドを BulkChangesでラップせずに呼び出すと、クライアント側のキャッシュが破損する可能性があります。
使用例
var scope = clientCache.CreateScope();
clientCache.BulkChanges(delegate
{
  foreach(var detail in scope.GetItems<Order_Details>)
    detail.Discount *= 2;
});
参照

ClientCacheBase クラス
ClientCacheBase メンバ