FireDAC.Comp.DataSet.TFDDataSet.CachedUpdates
Delphi
property CachedUpdates: Boolean read GetCachedUpdates write SetCachedUpdates default False;
C++
__property bool CachedUpdates = {read=GetCachedUpdates, write=SetCachedUpdates, default=0};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
property | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
説明
データへの変更を、データベースにすぐに適用しないで、データセットがログに記録するかどうかを指定します。
CachedUpdates は、データ変更(Insert/Post、Edit/Post、Delete)をデータベースにすぐに適用しないで、ログ記録を残すことを有効にする(True)か、無効にします(False)。アプリケーションでは、ApplyUpdates メソッドを使用して、変更ログから変更をデータベースに明示的に適用する必要があります。すべての変更は、単一トランザクションで、短時間で書き込まれます。更新のキャッシュを有効にする主な利点は、次のようなものがあります。
- トランザクションを減らし、トランザクション時間を短縮します。
- ネットワーク トラフィックを最小限に抑えられます。
- データセットに対する undo(取り消し)/redo(やり直し)機能が簡単に実装できます。
- アプリケーションでオフライン モード(ブリーフケース モデル)を実装できます。
更新のキャッシュを有効にした場合に発生する可能性のある欠点は次のとおりです。
- ユーザーがデータのローカル コピーを編集中に、他のアプリケーションがサーバー上の実データにアクセスし変更できます。結果として、キャッシュされた更新をデータベースに適用すると、更新が競合してしまいます。
- キャッシュされた更新がデータベースに適用されるまで、アプリケーションによるデータ変更に、他のアプリケーションがアクセスできません。
メモ: TFDTable の CachedUpdate プロパティを変更するには、対象がアクティブではないことが必要です。
例
FDQuery1.CachedUpdates := True;
...
FDQuery1.Edit;
...
FDQuery1.Post;
...
FDQuery1.Append;
...
FDQuery1.Post;
...
FDQuery1.ApplyUpdates;
FDQuery1.CommitUpdates;
FDQuery1.CachedUpdates := False;