Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
みなさん、こんにちは。
今回は前回に続き、CrmOrganizationServiceContext のキャッシュ機能の
トピックをお届けします。今回はキャッシュのコントロールです。
CrmOrganizationServiceContext の依存関係
CrmOrganizationServiceContext はいくつかのクラスに依存し、また
機能を提供します。依存関係は以下のページを参照してください。
Developer Extensions のコンテキスト オブジェクト モデル
https://technet.microsoft.com/ja-jp/library/gg695819.aspx
このページの表から、キャッシュを保持するクラスが確認できます。
キャッシュの無効化
キャッシュをコントロールする方法の一つとして、キャッシュ機能を
完全に無効にする方法が考えらます。この場合、キャッシュ機能を
もつクラスの依存を取り除くだけで実現可能です。
var connection = new CrmConnection("Xrm");
// CrmConnection から OrganizationService を生成。キャッシュ機能なし
var myService = new OrganizationService(connection);
// キャッシュなしの組織サービスを渡して XrmContextService を生成
var xrm = new XrmContext(myService);
ほかの方法として、キャッシュ機能を持っている OrganizationServiceCache
の設定を変更することも可能です。
var connection = new CrmConnection("Xrm");
// OrganizationServiceCache の Mode で Disable を設定
var myServiceCache = new OrganizationServiceCache();
myServiceCache.Mode = OrganizationServiceCacheMode.Disabled;
// 生成した OrganizationServiceCache と CrmConnection よりサービス生成
var myService = new CachedOrganizationService(connection, myServiceCache);
var xrm = new XrmContext(myService);
キャッシュのタイムアウト時間を制御
サービスコンテキストの生成にはアプリケーション構成ファイルを利用できます。
またその中で詳細な設定が可能です。詳細は以下のページを参照してください。
構成ファイルを使用したコンテキストの構成
https://technet.microsoft.com/ja-jp/library/gg695805.aspx
ここでは既定の構成のうち、objectCache 要素のみ以下のように duration を
変更しました。
<objectCache default="Xrm">
<add
name="Xrm"
type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
instanceMode="PerName"
absoluteExpiration=""
slidingExpiration="00:00:00"
duration="00:00:10"
priority="Default"
outputCacheProfileName="Xrm"
/>
< /objectCache>
またサービスコンテキストの生成部分は以下のようにしています。
var xrm = new XrmContext("Xrm");
この場合、プログラムからレコードを追加後、10 秒待つことで最新の情報を
取得することが可能です。
まとめ
SDK では他にもキャッシュのハンドル方法が提供されています。
是非いろいろ試してください。
- Dynamics CRM サポート 中村 憲一郎