1

昔、私はこれを持っていました http://arens.ws/wordpress/?p=54

public static void ClearCache(string entityName)
{
  const string format = "adxdependency:crm:entity:{0}";
  var dependency = string.Format(format, entityName).ToLower();

  var cache = Microsoft.Xrm.Client.Caching.CacheManager.GetBaseCache();
  cache.Remove(dependency);
}

2011年は違います。何か案は?

4

1 に答える 1

1

少しだけ変更されました。

ObjectCache cache = Microsoft.Xrm.Client.Caching.ObjectCacheManager
    .GetInstance("Xrm");
string cachekey = String.Format("xrm:dependency:entity:{0}:id={1:D}", 
    entity.LogicalName, entity.Id);
cache.Remove(cachekey);

これに関するドキュメントは見つかりませんでした。キャッシュを列挙してキーの命名スキームを見つけました。おそらくこれを使用することはベスト プラクティスではありません。次のバージョンで再び変更される可能性がありますか? これを行うためのより良い方法があるはずです...

【お知らせ】もっといい方法があります。

これを試して:

var serviceContext = (Get an OrganizationServiceContext);

var serviceContainer = serviceContext as 
                           OrganizationServiceContainer;
var cachedOrgService = serviceContainer.Service as 
                           CachedOrganizationService;
var orgServiceCache = cachedOrgService.Cache as 
                           IOrganizationServiceCache;
var entity = (Get the entity that was updated);

orgServiceCache.Remove(entity.LogicalName, entity.Id);

魅力のように機能します...

于 2012-04-04T00:52:43.933 に答える