【问题标题】:What is the Best Practice to update multiple fields in a Plugin更新插件中多个字段的最佳实践是什么
【发布时间】:2014-02-20 05:09:16
【问题描述】:

我在 Post 操作中注册了一个插件,它需要使用 XML 文件中的数据更新 CRM 中的多个字段。目前我正在使用以下代码:

                    if (node["node1"] != null)
                    {
                            var sId = sElement.GetElementsByTagName("pId")[0].InnerText;
                            Guid sGUID = new Guid(sId);
                            sEntity["Attrib1"] = sGUID;
                            service.Update(sEntity);
                    }

                    if (node["node2"] != null)
                    {
                            var sMax = sElement.GetElementsByTagName("pMax")[0].InnerText;
                            sEntity["Attrib2"] = sMax;
                            service.Update(sEntity);
                    }

                    if (node["node3"] != null)
                    {
                            var sMin = sElement.GetElementsByTagName("pMin")[0].InnerText;
                            sEntity["Attrib3"] = sMin;
                            service.Update(sEntity);
                    }

所以我每次需要更新时都会调用 service.Update,在上述情况下是 3 次。

有没有更好的方法来完成我正在尝试做的事情并只调用一次 service.Update

【问题讨论】:

    标签: dynamics-crm-2011 dynamics-crm


    【解决方案1】:

    最后你可以只做一次更新(最终你可以添加一个检查以防所有字段都没有改变,以避免无用的更新):

      if (node["node1"] != null)
                        {
                                var sId = sElement.GetElementsByTagName("pId")[0].InnerText;
                                Guid sGUID = new Guid(sId);
                                sEntity["Attrib1"] = sGUID;
                        }
    
                        if (node["node2"] != null)
                        {
                                var sMax = sElement.GetElementsByTagName("pMax")[0].InnerText;
                                sEntity["Attrib2"] = sMax;
                        }
    
                        if (node["node3"] != null)
                        {
                                var sMin = sElement.GetElementsByTagName("pMin")[0].InnerText;
                                sEntity["Attrib3"] = sMin;
                        }
    service.Update(sEntity);
    

    【讨论】:

    • 非常感谢吉多。我正在这样做,但由于出现错误,我将其更改为更新每个属性。最终错误是由于更新了我将其更新为实体属性的实体引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多