1

我写了这个简单的查询:

var connectionString = String.Format("Url={0}; Username={1}; Password={2}; Domain={3}", url, username, password, domain);
var myConnection = CrmConnection.Parse(connectionString);
CrmOrganizationServiceContext _service = new CrmOrganizationServiceContext(myConnection);
var whoAmI = _service.Execute(new WhoAmIRequest());

var query = new QueryExpression
        {
            EntityName = "phonecall",
            ColumnSet = new ColumnSet(true)
        };

        query.PageInfo = new PagingInfo
        {
            Count = 20,
            PageNumber = 1,
            PagingCookie = null
        };

        query.Orders.Add(new OrderExpression
        {
            AttributeName = "actualstart",
            OrderType = OrderType.Descending
        });

        query.Criteria = new FilterExpression() { FilterOperator = LogicalOperator.And };
        query.Criteria.AddCondition("call_caller", ConditionOperator.In, lines);

var entities = _service.RetrieveMultiple(query).Entities;

我有一个程序每分钟运行一次这个查询。在第一次执行时,会显示正确的结果,但对于后续查询,当我更新 CRM 中的记录时,结果永远不会改变。

如果我重新启动程序,结果会在第一次加载时再次正确刷新。

为什么在 CRM 中修改记录时结果不更新?

4

2 回答 2

1

进行缓存的是CrmOrganizationServiceContext - 我发现以下内容很有效,并且我的 RetrieveMultiple 的结果不再被缓存:)

Context = new CrmOrganizationServiceContext(CrmConnection.Parse(connectionString));
Context.TryAccessCache(cache => cache.Mode = OrganizationServiceCacheMode.Disabled);
于 2015-01-21T13:21:18.750 回答
0

RetrieveMultiple 总是带回新鲜的结果,所以程序的某些其他方面一定会导致显示陈旧的数据。

于 2015-01-20T14:19:25.903 回答