1

我正在实施一个接收信息并需要将它们映射到 MS Dynamics CRM 的 Web 服务。

因此,在设置 OptionSet 值时,由于我不是实施 CRM 的人,所以我不知道设置了哪些索引。我只知道标签。使用我服务的人自然也是如此。例如,我将 Opportunity 称为 Warm 或 Cold,而不是 10033004 和 10033005。但我仍然需要在 Opportunity 实体上设置此值。

我找到了这个链接- 但我认为这真的有点矫枉过正,如果这是我可以访问 OptionSet 的唯一方法,那就太遗憾了。

4

1 回答 1

1

这里有几个选项。

  1. 使用元数据服务,例如您的链接,我同意这感觉有点矫枉过正,但您可以添加缓存以减少多个服务调用的开销。如果您真的不知道运行时的值是多少,那么这可能是最好的方法。
  2. 只需对其进行硬编码,如果您在编译时知道值是什么,那么这可能是最快的选择。我以前做过,通常都很好。但是,如果有人更改 CRM,这显然会中断。
  3. 使用强类型类,这实际上是硬编码,只是系统为您完成。但是,如果 CRM 发生变化,您将重新生成它们。

因此,恐怕这些都不是一个完美的选择,但它们都能完成工作。


编辑

回复:选项 3;我的意思是这里描述的早期绑定实体:http: //msdn.microsoft.com/en-us/library/gg328210.aspx。我不确定他们在这种情况下会有多大帮助。它们是强类型类,用于代替实体类。例如contact.firstname 而不是entity["firstname"]。我想您也许可以将它们用作元数据的一种形式-尽管我自己从未尝试过。它也有与选项 2 相同的问题,当 CRM 更改时,它们需要更新然后编译。

在这种情况下,我转向选项 1 并查询元数据服务,如果您这样做一次并在流程开始时缓存结果,您将始终拥有最新的信息。此示例说明如何获取系统http://msdn.microsoft.com/en-us/library/jj603008中的所有元数据。

于 2012-09-01T10:44:29.153 回答