CRM2011 - 当我使用InsertOptionValueRequest添加新的选项设置值时,为什么要删除现有值

时间:2012-01-11 04:00:27

标签: c# dynamics-crm-2011

我正在尝试使用InsertOptionValueRequest向C#中的MS Dynamics CRM选项集添加新值,当我这样做时,某些现有选项集值将被删除。

我使用的代码如下:

    ovRequest = new InsertOptionValueRequest
    {
        AttributeLogicalName = strOptionsetName,
        EntityLogicalName = strEntityName,
        Label = new Label(strLabel, LanguageCode)
    };
    _service.Execute(ovRequest);

然后我发布实体:

    pxReq1 = new PublishXmlRequest { ParameterXml = String.Format("<importexportxml><entities><entity>{0}</entity></entities></importexportxml>", strEntityName) };
    ospService.Execute(pxReq1);

我发现本地选项集和全局选项集都会发生这种情况,并且无法在删除的值中看到任何模式。我做错了什么,或者这是SDK中的错误?

PS,有人可以为此添加insertoptionvaluerequest标记,因为我认为该标记与此帖子最相关。

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案。 MS Dynamics不会删除现有值,而是覆盖现有选项集值上的标签。这肯定是一个错误,因为正在运行的命令是InsertOptionValueRequest,并且有一个单独的UpdateOptionValueReqequest用于更新值。

要解决此问题,请在插入记录时手动设置值,而不是依赖系统为您生成一个:

ovRequest = new InsertOptionValueRequest
{
    AttributeLogicalName = strOptionsetName,
    EntityLogicalName = strEntityName,
    Label = new Label(strLabel, LanguageCode),
    Value = MyNewValue
};
_service.Execute(ovRequest);