2014-02-19 34 views
0

我有一個在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只有一次?

回答

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

太謝謝你了圭多。我這樣做,但我改變它來更新每個屬性,因爲我得到一個錯誤。它最終導致錯誤是由於更新實體引用,因爲我將它更新爲實體屬性。 – Nick