更新插件中多个字段的最佳实践是什么?

时间:2014-02-19 20:40:01

标签: dynamics-crm-2011 dynamics-crm

我在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

1 个答案:

答案 0 :(得分:2)

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

  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);