CRM 2011自定义Workflow LINQ查询在不为空时提供无效的值



我正在为MS Dynamics CRM 2011编写自定义工作流程。在工作流程中,我有一个专门用于查询的类 - 这是因为我为其他方法做了大量Quires在工作流程中。对于我的查询,我正在使用linq。

我在测试中遇到了一个问题,其中有两种方法出去并获得不同的选项集值。如果单独测试,它们都可以工作。但是,如果我背对背测试它们……获取此选项设置值…然后获取此选项集值:随后的查询始终返回null。

<!-- language: cs -->
public int GetOptionSetValues(WorkFlowHelper workFlowHelper, String bracketId)
{
     Guid _bracketId = workFlowHelper.GuidChanger(bracketId);
     var query = from b in workFlowHelper.serviceContext.myEntitySet
                 where b.myEntitySetId.Equals(_bracketId)
                 select new { b.itemToGetOptionSetFrom };
     foreach (var qin query )
     {
       if (q.itemToGetOptionSetFrom == null)
       {
        return 0;
       }
       else
       {
        int optionSetValue = q.itemToGetOptionSetFrom;
        return optionSetValue;
       }
     }
      return 0;
 }

这两种方法与上述相同,除了" itemTogetoptionseteTeTeT"不同。我已经检查了数据库,项目确实具有值。

谁能解释为什么这样做?还是将我指向正确的方向以纠正此问题?谢谢,

我猜您正在使用相同的服务上下文检索相同的对象。如果您从实体请求属性,则CRMContext将使用唯一的来缓存该实体的副本。这意味着包括该实体的所有后续LINQ请求将返回该实体的缓存副本,该副本仅包括您先前请求的ID和属性。为避免这种情况,您可以在提出下一个请求之前调用ClearChanges()以删除缓存版本。

相关内容

  • 没有找到相关文章

最新更新