我写了这个简单的查询:
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中修改记录时更新?
答案 0 :(得分:1)
CrmOrganizationServiceContext 正在进行缓存 - 我发现以下内容有效,而且我的RetrieveMultiple的结果不再缓存:)
Context = new CrmOrganizationServiceContext(CrmConnection.Parse(connectionString));
Context.TryAccessCache(cache => cache.Mode = OrganizationServiceCacheMode.Disabled);
答案 1 :(得分:0)
RetrieveMultiple总会带回新的结果,因此程序必须有一些其他方面导致过时的数据显示。