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 に答える