Я использую FetchExpression
против операции RetrieveMultiple
на CrmOrganizationServiceContext
в службе Windows для извлечения и обработки элементов из очереди.
При первом запуске выполняется выборка элементовбыть обработанным правильно.При последующих вызовах, использующих один и тот же экземпляр CrmOrganizationServiceContext
, он всегда получает нулевые объекты без ошибок.Я добавил новые сущности и повторно активировал существующие, которые должны быть извлечены с использованием FetchXml, а они не получены.
Как только я перезапускаю свой сервис, он создает новый экземпляр CrmOrganizationServiceContext
и получаетновые элементы.
Что я здесь не так делаю?
public CrmConnector(string connectionString)
{
Context = new CrmOrganizationServiceContext(CrmConnection.Parse(connectionString));
}
public void FetchStuff()
{
string fetchXml = "...";
FetchExpression fetchExpression = new FetchExpression(fetchXml);
EntityCollection entityCollection = Context.RetrieveMultiple(fetchExpression);
// entityCollection.Entities is always empty following first run
}
private CrmOrganizationServiceContext Context { get; set; }
Получать XML по запросу, единственной настройкой является атрибут count, который ограничивает количество возвращаемых элементов (так как этопроцессор очередей)
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" count="10">
<entity name="xxx1">
<attribute name="xxx_name" />
<attribute name="createdon" />
<attribute name="xxx_1" />
<attribute name="xxx_2" />
<attribute name="xxx_3" />
<attribute name="xxx_4" />
<attribute name="statecode" />
<order attribute="createdon" descending="false" />
<filter type="and">
<condition attribute="xxx_exported" value="0" operator="eq"/>
</filter>
</entity>
</fetch>