C# 如何在Microsoft CRM 2011中基于文本或标签设置OptionSet值?

C# 如何在Microsoft CRM 2011中基于文本或标签设置OptionSet值?,c#,crm,microsoft-dynamics,C#,Crm,Microsoft Dynamics,我正在实现一个web服务,该服务接收信息并需要将它们映射到MS Dynamics CRM上 因此,在设置OptiStart值时,由于我不是实施CRM的人,所以我不知道设置了哪些索引。我只知道标签。当然,使用我的服务的人也是如此。e、 g.我称机会为温暖或寒冷,而不是10033004和10033005。但我仍然需要在Opportunity实体上设置此值 我发现了-但我认为这真的太过分了,如果这是我访问OptionSet的唯一方法,那就太遗憾了。这里有几个选项 使用元数据服务,例如您的链接,我同意这

我正在实现一个web服务,该服务接收信息并需要将它们映射到MS Dynamics CRM上

因此,在设置OptiStart值时,由于我不是实施CRM的人,所以我不知道设置了哪些索引。我只知道标签。当然,使用我的服务的人也是如此。e、 g.我称机会为温暖或寒冷,而不是10033004和10033005。但我仍然需要在Opportunity实体上设置此值


我发现了-但我认为这真的太过分了,如果这是我访问OptionSet的唯一方法,那就太遗憾了。

这里有几个选项

  • 使用元数据服务,例如您的链接,我同意这感觉有点过分,但您可以添加缓存以减少多个服务调用的开销。如果您真的不知道运行时的值是多少,那么这可能是最好的方法
  • 只要硬编码,如果您在编译时知道值是什么,那么这可能是最快的选择。我以前做过,通常都很好。但是,如果有人更改CRM,这显然会中断
  • 使用强类型类,这是有效的硬编码,只是系统为您做的。但是,如果CRM发生更改,则必须重新生成它们
  • 因此,恐怕这些都不是一个完美的选择,但它们都能完成任务


    编辑

    关于:备选方案3;我是指此处描述的早期绑定实体:。我不确定他们在这种情况下会有多大帮助。它们是用来代替实体类的强类型类。例如,contact.firstname而不是实体[“firstname”]。我想您可能可以将它们用作元数据的一种形式——不过我自己从未尝试过。此外,它还有与选项2相同的问题,当CRM发生更改时,需要对其进行更新,然后进行编译


    在本例中,我将转向选项1并查询元数据服务,如果您这样做一次并在流程开始时缓存结果,您将始终拥有最新的信息。此示例显示如何获取系统中的所有元数据。

    这里有两个选项

  • 使用元数据服务,例如您的链接,我同意这感觉有点过分,但您可以添加缓存以减少多个服务调用的开销。如果您真的不知道运行时的值是多少,那么这可能是最好的方法
  • 只要硬编码,如果您在编译时知道值是什么,那么这可能是最快的选择。我以前做过,通常都很好。但是,如果有人更改CRM,这显然会中断
  • 使用强类型类,这是有效的硬编码,只是系统为您做的。但是,如果CRM发生更改,则必须重新生成它们
  • 因此,恐怕这些都不是一个完美的选择,但它们都能完成任务


    编辑

    关于:备选方案3;我是指此处描述的早期绑定实体:。我不确定他们在这种情况下会有多大帮助。它们是用来代替实体类的强类型类。例如,contact.firstname而不是实体[“firstname”]。我想您可能可以将它们用作元数据的一种形式——不过我自己从未尝试过。此外,它还有与选项2相同的问题,当CRM发生更改时,需要对其进行更新,然后进行编译


    在本例中,我将转向选项1并查询元数据服务,如果您这样做一次并在流程开始时缓存结果,您将始终拥有最新的信息。此示例演示如何获取系统中的所有元数据。

    谢谢。有200多个实例已经就位并正在更改,选项2对我来说并不合适。另外,现在,我只能通过逆向工程来找出实际值。不过,请详细说明备选方案3。您指的是CRM实体吗?谢谢。有200多个实例已经就位并正在更改,选项2对我来说并不合适。另外,现在,我只能通过逆向工程来找出实际值。不过,请详细说明备选方案3。您指的是CRM实体吗?