如何根据文本或标签在Microsoft CRM 2011中设置OptionSet值?

时间:2012-08-31 14:01:39

标签: c# crm microsoft-dynamics

我正在实施一项Web服务,该服务接收信息并需要在MS Dynamics CRM上映射它们。

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

我找到了this link - 但我觉得这真是太过分了,如果这是我可以访问OptionSet的唯一方法,那就太可悲了。

1 个答案:

答案 0 :(得分:1)

这里有几个选项。

  1. 使用元数据服务,例如您的链接,我同意这感觉有点过分,但您可以添加缓存以减少多个服务调用的开销。如果你真的不知道运行时的价值是什么,那么这可能是最好的方式。
  2. 只需硬编码,如果您在编译时知道值将是什么,那么这可能是最快的选择。我以前做过这个,通常很好。但是,如果有人改变CRM,这显然会破裂。
  3. 使用强类型类,这实际上是硬编码只是系统为你做的。但是,如果CRM发生变化,您将重新生成它们。
  4. 所以这些都不是我害怕的完美选择,但他们都完成了工作。


    修改

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

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