//// --------------------------------------------------------------- /// <summary> /// Serialises the entity to xml to pass to the SDK webservices /// </summary> /// <param name="ommitRoot"></param> /// <returns></returns> public string Serialise(bool?ommitRoot) { string xml = ""; if (ommitRoot == null || ommitRoot == false) { xml += "<a:Entity>"; } xml += "<a:Attributes>"; Dictionary <string, object> record = (Dictionary <string, object>)((object)this); // Check primary key attribute - Guid's can't have a null value if (record[this.LogicalName + "id"] == null) { record.Remove(this.LogicalName + "id"); } foreach (string key in record.Keys) { // Exclude the built in properties if ((bool)Script.Literal(@"typeof({0}[{1}])!=""function""", record, key) && (bool)Script.Literal("Object.prototype.hasOwnProperty.call({0}, {1})", this, key) && !StringEx.IN(key, new string[] { "id", "logicalName", "entityState", "formattedValues" }) && !key.StartsWith("$") && !key.StartsWith("_")) { object attributeValue = record[key]; if (!FormattedValues.ContainsKey(key)) { xml += Attribute.Serialise(key, attributeValue, _metaData); } } } xml += "</a:Attributes>"; xml += "<a:LogicalName>" + this.LogicalName + "</a:LogicalName>"; if (this.Id != null) { xml += "<a:Id>" + this.Id + "</a:Id>"; } if (ommitRoot == null || ommitRoot == false) { xml += "</a:Entity>"; } return(xml); }