gpt4 book ai didi

c# - FetchExpression 结果似乎被缓存了,我该如何防止这种情况发生?

转载 作者:行者123 更新时间:2023-11-30 22:33:08 25 4
gpt4 key购买 nike

我在 Windows 服务中针对 CrmOrganizationServiceContext 上的 RetrieveMultiple 操作使用 FetchExpression 来从队列中获取和处理项目。

第一次运行时,它会获取要正确处理的项目。在使用相同的 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,唯一的自定义是限制返回项目数量的计数属性(因为这是一个队列处理器)

  <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>

最佳答案

CrmOrganizationServiceContext 正在执行缓存 - 我发现以下内容很有效,我的 RetrieveMultiple 的结果不再被缓存 :)

Context = new CrmOrganizationServiceContext(CrmConnection.Parse(connectionString));
Context.TryAccessCache(cache => cache.Mode = OrganizationServiceCacheMode.Disabled);

关于c# - FetchExpression 结果似乎被缓存了,我该如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com