private string GetNavigationPropertyName(CrmAttribute crmAttribute) { if (crmAttribute.FieldType == AttributeTypeCode.Owner) { return("OwnerId_systemuser;OwnerId_team"); } if (crmAttribute.LogicalName == "acceptingentityid") { return("acceptingentityid_queue;acceptingentityid_systemuser"); } var value = string.Empty; var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray()); foreach (var entity in entities) { var related = Relationships.EntityMetadata.ManyToOneRelationships.FirstOrDefault( item => item.ReferencingAttribute == crmAttribute.LogicalName && item.ReferencedEntity == entity); if (related != null) { value += related.ReferencingEntityNavigationPropertyName + ";"; } } return(value.TrimEnd(";".ToCharArray())); }
private string GetWebApiType(CrmAttribute crmAttribute) { var @readonly = string.Empty; var apiType = string.Empty; if (!(crmAttribute.IsValidForCreate || crmAttribute.IsValidForUpdate)) { @readonly = "ReadOnly - "; } if (crmAttribute.FieldType == AttributeTypeCode.Uniqueidentifier || crmAttribute.FieldType == AttributeTypeCode.Lookup || crmAttribute.FieldType == AttributeTypeCode.Customer || crmAttribute.FieldType == AttributeTypeCode.Owner) { apiType = "Edm.Guid"; } else if (crmAttribute.FieldType == AttributeTypeCode.Picklist || crmAttribute.FieldType == AttributeTypeCode.State || crmAttribute.FieldType == AttributeTypeCode.Status) { apiType = "Edm.Int32"; } else if (crmAttribute.FieldType == AttributeTypeCode.String || crmAttribute.FieldType == AttributeTypeCode.Memo) { apiType = "Edm.String"; } else if (crmAttribute.FieldType == AttributeTypeCode.Double) { apiType = "Edm.Double"; } else if (crmAttribute.FieldType == AttributeTypeCode.Integer) { apiType = "Edm.Int32"; } else if (crmAttribute.FieldType == AttributeTypeCode.Decimal || crmAttribute.FieldType == AttributeTypeCode.Money) { apiType = "Edm.Decimal"; } else if (crmAttribute.FieldType == AttributeTypeCode.Boolean) { apiType = "Edm.Boolean"; } else if (crmAttribute.FieldType == AttributeTypeCode.DateTime) { if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { apiType = "Edm.Date"; } else { apiType = "Edm.DateTimeOffset"; } } return($"{@readonly}{apiType}"); }
private string GetXmlCommentForField(CrmAttribute crmAttribute, string Class) { const string temp = "\t\t///<field name=\"{0}\" type=\"{1}\">{2}</field>\r\n"; const string temp2 = "\t\t///<field name=\"{0}\" type=\"{1}\">{2}</field>\r\n"; var comment = string.Empty; if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { comment += string.Format(temp, crmAttribute.SchemaName + "_DateOnly", GetFieldType(crmAttribute), GetWebApiType(crmAttribute)); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent) { if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly) { comment += string.Format(temp, crmAttribute.SchemaName + "_TimezoneDateOnly", GetFieldType(crmAttribute), GetWebApiType(crmAttribute)); } else { comment += string.Format(temp, crmAttribute.SchemaName + "_TimezoneDateAndTime", GetFieldType(crmAttribute), GetWebApiType(crmAttribute)); } } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal) { if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly) { comment += string.Format(temp, crmAttribute.SchemaName + "_UtcDateOnly", GetFieldType(crmAttribute), GetWebApiType(crmAttribute)); } else { comment += string.Format(temp, crmAttribute.SchemaName + "_UtcDateAndTime", GetFieldType(crmAttribute), GetWebApiType(crmAttribute)); } } else { var fieldType = GetFieldType(crmAttribute); if (fieldType == "PickList") { comment += string.Format(temp2, crmAttribute.SchemaName, $"OptionSet", $"{GetWebApiType(crmAttribute)} - this.OptionSet.{crmAttribute.SchemaName}"); } else { comment += string.Format(temp, crmAttribute.SchemaName, fieldType, GetWebApiType(crmAttribute)); } } return(comment); }
private string GetLogicalCollectionName(CrmAttribute crmAttribute) { var value = string.Empty; var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray()); foreach (var entity in entities) { var request = new RetrieveEntityRequest { EntityFilters = EntityFilters.Attributes, LogicalName = entity }; var response = (RetrieveEntityResponse)CrmService.Execute(request); value += response.EntityMetadata.LogicalCollectionName + ";"; } return(value.TrimEnd(";".ToCharArray())); }
private void LoadData(string entity) { var logicalName = entity.ToLower(); Lists = new List <CrmAttribute>(); var request = new RetrieveEntityRequest { EntityFilters = EntityFilters.Attributes, LogicalName = logicalName }; var response = (RetrieveEntityResponse)_crmService.Execute(request); ObjectTypeCode = response.EntityMetadata.ObjectTypeCode.Value; HasImage = !string.IsNullOrEmpty(response.EntityMetadata.PrimaryImageAttribute); var requestRelationships = new RetrieveEntityRequest { EntityFilters = EntityFilters.Relationships, LogicalName = logicalName }; var responseRelationships = (RetrieveEntityResponse)_crmService.Execute(requestRelationships); var lists = new List <CrmAttribute>(); foreach (var attribute in response.EntityMetadata.Attributes) { var crmAttribute = new CrmAttribute(attribute, logicalName); if (crmAttribute.FieldType == AttributeTypeCode.Lookup || crmAttribute.FieldType == AttributeTypeCode.Customer || crmAttribute.FieldType == AttributeTypeCode.Owner) { crmAttribute.LogicalCollectionName = GetLogicalCollectionName(crmAttribute); crmAttribute.NavigationPropertyName = GetNavigationPropertyName(crmAttribute, responseRelationships); } else { crmAttribute.LogicalCollectionName = string.Empty; } lists.Add(crmAttribute); } lists = lists.OrderBy(row => row.Name).ToList(); Lists = lists; }
private string GetNavigationPropertyName(CrmAttribute crmAttribute, RetrieveEntityResponse responseRelationships) { if (crmAttribute.FieldType == AttributeTypeCode.Owner) { return("ownerid;ownerid"); } var value = string.Empty; var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray()); foreach (var entity in entities) { var related = responseRelationships.EntityMetadata.ManyToOneRelationships.FirstOrDefault( item => item.ReferencingAttribute == crmAttribute.LogicalName && item.ReferencedEntity == entity); if (related != null) { value += related.ReferencingEntityNavigationPropertyName + ";"; } } return(value.TrimEnd(";".ToCharArray())); }
private string GetFieldType(CrmAttribute crmAttribute) { if (crmAttribute.FieldType == AttributeTypeCode.Picklist || crmAttribute.FieldType == AttributeTypeCode.State || crmAttribute.FieldType == AttributeTypeCode.Status) { return("PickList"); } if (crmAttribute.FieldType == AttributeTypeCode.DateTime) { if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { return("DateOnly"); } } if (crmAttribute.FieldType == AttributeTypeCode.Lookup || crmAttribute.FieldType == AttributeTypeCode.Owner || crmAttribute.FieldType == AttributeTypeCode.Customer) { return("Lookup"); } return(crmAttribute.FieldType.ToString()); }
private string DeclareType(CrmAttribute crmAttribute) { if (crmAttribute.IsPrimaryKey) { return("Guid"); } switch (crmAttribute.FieldType) { case AttributeTypeCode.Picklist: case AttributeTypeCode.State: case AttributeTypeCode.Status: return($"{RootNameSpace}.{ EntityName}OptionSets." + SafeType(crmAttribute.Name, EntityName + "OptionSets") + "?"); case AttributeTypeCode.BigInt: return("long?"); case AttributeTypeCode.Integer: return("int?"); case AttributeTypeCode.Boolean: return("bool?"); case AttributeTypeCode.DateTime: if (crmAttribute.DateTimeBehavior == null) { return("DateTime?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { return("Date?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent) { return("DateTime?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal) { return("DateTime?"); } return("DateTime?"); case AttributeTypeCode.Decimal: return("decimal?"); case AttributeTypeCode.Money: return("decimal?"); case AttributeTypeCode.Double: return("double?"); case AttributeTypeCode.Uniqueidentifier: if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower()) { return("Guid"); } return("Guid?"); case AttributeTypeCode.Lookup: case AttributeTypeCode.Owner: case AttributeTypeCode.Customer: return("EntityReference"); case AttributeTypeCode.Memo: case AttributeTypeCode.Virtual: case AttributeTypeCode.EntityName: case AttributeTypeCode.String: if (crmAttribute.IsMultiSelectPicklist) { return("System.Collections.Generic.List<" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ">"); } else { return("string"); } case AttributeTypeCode.PartyList: return("System.Collections.Generic.List<ActivityParty>"); case AttributeTypeCode.ManagedProperty: return("?"); default: return("?"); } }
private string GetGet(CrmAttribute crmAttribute) { var code = string.Empty; switch (crmAttribute.FieldType) { case AttributeTypeCode.Picklist: case AttributeTypeCode.State: case AttributeTypeCode.Status: code += "get\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar value = Entity.GetAttributeValue<OptionSetValue>(Fields." + crmAttribute.Name + ");\r\n"; code += "\t\t\t\tif (value == null) return null;\r\n"; code += "\t\t\t\treturn (" + $"{RootNameSpace}.{EntityName}OptionSets." + SafeType(crmAttribute.Name, EntityName + "OptionSets") + ")value.Value;\r\n"; code += "\t\t\t}}"; return(code); case AttributeTypeCode.BigInt: return("get {{ return Entity.GetAttributeValue<long?>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.Integer: return("get {{ return Entity.GetAttributeValue<int?>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.Boolean: return("get {{ return Entity.GetAttributeValue<bool?>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.DateTime: if (crmAttribute.DateTimeBehavior == null) { return("get {{ return Entity.GetAttributeValue<DateTime?>(Fields." + crmAttribute.Name + "); }}"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { code += "get\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar dateTime = Entity.GetAttributeValue<DateTime?>(Fields." + crmAttribute.Name + ");\r\n"; code += "\t\t\t\tif (dateTime == null) return null;\r\n"; code += "\t\t\t\treturn dateTime.Value.ToDate();\r\n"; code += "\t\t\t}}"; return(code); } else { return("get {{ return Entity.GetAttributeValue<DateTime?>(Fields." + crmAttribute.Name + "); }}"); } case AttributeTypeCode.Decimal: return("get {{ return Entity.GetAttributeValue<decimal?>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.Money: code += "get\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar value = Entity.GetAttributeValue<Money>(Fields." + crmAttribute.Name + ");\r\n"; code += "\t\t\t\tif (value == null) return null;\r\n"; code += "\t\t\t\treturn value.Value;\r\n"; code += "\t\t\t}}"; return(code); case AttributeTypeCode.Double: return("get {{ return Entity.GetAttributeValue<double?>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.Uniqueidentifier: if (crmAttribute.IsPrimaryKey) { return("get {{ return Id; }}"); } else { if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower()) { return("get {{ return Entity.GetAttributeValue<Guid>(Fields." + crmAttribute.Name + "); }}"); } return("get {{ return Entity.GetAttributeValue<Guid?>(Fields." + crmAttribute.Name + "); }}"); } case AttributeTypeCode.Lookup: case AttributeTypeCode.Owner: case AttributeTypeCode.Customer: return("get {{ return Entity.GetAttributeValue<EntityReference>(Fields." + crmAttribute.Name + "); }}"); case AttributeTypeCode.Memo: case AttributeTypeCode.Virtual: case AttributeTypeCode.EntityName: case AttributeTypeCode.String: if (crmAttribute.IsMultiSelectPicklist) { code += "get\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar data = new System.Collections.Generic.List<" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ">();\r\n"; code += "\t\t\t\tvar items = Entity.GetAttributeValue<OptionSetValueCollection>(Fields." + crmAttribute.Name + ");\r\n"; code += "\t\t\t\tif (items != null)\r\n"; code += "\t\t\t\t{{\r\n"; code += "\t\t\t\t\tforeach (OptionSetValue item in items)\r\n"; code += "\t\t\t\t\t{{\r\n"; code += "\t\t\t\t\t\tdata.Add((" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ")item.Value);\r\n"; code += "\t\t\t\t\t}}\r\n"; code += "\t\t\t\t}}\r\n"; code += "\t\t\t\treturn data;\r\n"; code += "\t\t\t}}"; return(code); } else { return("get {{ return Entity.GetAttributeValue<string>(Fields." + crmAttribute.Name + "); }}"); } case AttributeTypeCode.PartyList: code += "get\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar data = new System.Collections.Generic.List<ActivityParty>();\r\n"; code += "\t\t\t\tforeach (var item in Entity.GetAttributeValue<EntityCollection>(Fields." + crmAttribute.Name + ").Entities)\r\n"; code += "\t\t\t\t\tdata.Add(new ActivityParty(item));\r\n"; code += "\t\t\t\treturn data;\r\n"; code += "\t\t\t}}"; return(code); default: return("?" + crmAttribute.FieldType); } }
private string GetSet(CrmAttribute crmAttribute) { var code = string.Empty; if (crmAttribute.IsValidForCreate || crmAttribute.IsValidForUpdate) { switch (crmAttribute.FieldType) { case AttributeTypeCode.Picklist: case AttributeTypeCode.State: case AttributeTypeCode.Status: if (crmAttribute.IsRequired) { code = "set\r\n\t{{\r\n\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new OptionSetValue((int)value);\r\n"; code += "}}"; return(code); } code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tif (value.HasValue)\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new OptionSetValue((int)value.Value);\r\n"; code += "\t\t\t\telse\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n"; code += "\t\t\t}}"; return(code); case AttributeTypeCode.BigInt: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.Integer: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.Boolean: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.DateTime: if (crmAttribute.DateTimeBehavior == null) { return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tif (value.HasValue)\r\n"; code += "\t\t\t\t{{\r\n"; code += "\t\t\t\t\tDateTime" + (crmAttribute.IsRequired ? "" : "?") + " dateTime = value.Value.ToDateTime();\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = dateTime;\r\n"; code += "\t\t\t\t}}\r\n"; code += "\t\t\t\telse\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n"; code += "\t\t\t}}"; return(code); } else { return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); } case AttributeTypeCode.Decimal: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.Money: code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tif (value.HasValue)\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new Money(value.Value);\r\n"; code += "\t\t\t\telse\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n"; code += "\t\t\t}}"; return(code); case AttributeTypeCode.Double: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.Uniqueidentifier: if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower()) { code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = value;\r\n"; code += "\t\t\t\tEntity.Id = value;\r\n"; code += "\t\t\t}}"; return(code); } else { return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); } case AttributeTypeCode.Lookup: case AttributeTypeCode.Owner: case AttributeTypeCode.Customer: return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); case AttributeTypeCode.Memo: case AttributeTypeCode.Virtual: case AttributeTypeCode.EntityName: case AttributeTypeCode.String: if (crmAttribute.IsMultiSelectPicklist) { code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar data = new OptionSetValueCollection();\r\n"; code += "\t\t\t\tforeach (var item in value)\r\n"; code += "\t\t\t\t{{\r\n"; code += "\t\t\t\t\tdata.Add(new OptionSetValue((int)item));\r\n"; code += "\t\t\t\t}}\r\n"; code += "\t\t\t\tif (data.Count == 0)\r\n"; code += "\t\t\t\t{{\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n"; code += "\t\t\t\t}}\r\n"; code += "\t\t\t\telse\r\n"; code += "\t\t\t\t{{\r\n"; code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = data;\r\n"; code += "\t\t\t\t}}\r\n"; code += "\t\t\t}}"; return(code); } else { return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}"); } case AttributeTypeCode.PartyList: code += "set\r\n"; code += "\t\t\t{{\r\n"; code += "\t\t\t\tvar data = new EntityCollection();\r\n"; code += "\t\t\t\tforeach (var item in value)\r\n"; code += "\t\t\t\t\tdata.Entities.Add(item.Entity);\r\n"; code += "\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = data;\r\n"; code += "\t\t\t}}"; return(code); case AttributeTypeCode.ManagedProperty: return("set;"); //return string.Empty; default: return("set;"); //return string.Empty; } } return(string.Empty); }
private string GetXml(CrmAttribute crmAttribute) { var dataType = string.Empty; var readOnly = string.Empty; if (!crmAttribute.IsValidForCreate && !crmAttribute.IsValidForUpdate) { readOnly = "ReadOnly"; } if (readOnly.Length > 0) { dataType += readOnly + " - "; } if (crmAttribute.IsPrimaryKey) { dataType += "Primary Key - "; } if (crmAttribute.IsRequired) { dataType += "Required - "; } if (crmAttribute.FieldType == AttributeTypeCode.DateTime) { if (crmAttribute.DateTimeBehavior == null) { dataType += "DateTime"; } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { dataType += "DateTimeBehavior: DateOnly - DateTimeFormat: DateOnly"; } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal) { if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly) { dataType += "DateTimeBehavior: UserLocal - DateTimeFormat: DateOnly"; } else if (crmAttribute.DateTimeFormat == DateTimeFormat.DateAndTime) { dataType += "DateTimeBehavior: UserLocal - DateTimeFormat: DateAndTime"; } } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent) { if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly) { dataType += "DateTimeBehavior: TimeZoneIndependent - DateTimeFormat: DateOnly"; } else if (crmAttribute.DateTimeFormat == DateTimeFormat.DateAndTime) { dataType += "DateTimeBehavior: TimeZoneIndependent - DateTimeFormat: DateAndTime"; } } } else { if (crmAttribute.IsMultiSelectPicklist) { dataType += "MultiSelectPicklist"; } else { dataType += crmAttribute.FieldType.ToString(); } } if (crmAttribute.MaxLength.HasValue) { dataType += " - MaxLength: " + crmAttribute.MaxLength; } if (crmAttribute.Min.HasValue) { dataType += " - MinValue: " + crmAttribute.Min.Value.ToString("#,##0"); } if (crmAttribute.Max.HasValue) { dataType += " - MaxValue: " + crmAttribute.Max.Value.ToString("#,##0"); } var xml = "/// <summary>\r\n"; if (!string.IsNullOrEmpty(crmAttribute.Description)) { var description = crmAttribute.Description.Replace("\r\n", " ").Replace("\n", " "); description = description.Trim(); xml += "\t\t/// <para>" + XmlEscape(description) + "</para>\r\n"; } xml += "\t\t/// <para>" + dataType + "</para>\r\n"; xml += "\t\t/// <para>" + crmAttribute?.DisplayName?.Replace("\n", "") + "</para>\r\n"; xml += "\t\t/// </summary>\r\n"; xml += "\t\t[DebuggerNonUserCode()]\r\n"; return(xml); }
private string DeclareType(CrmAttribute crmAttribute) { if (crmAttribute.IsPrimaryKey) { return("Guid"); } switch (crmAttribute.FieldType) { case AttributeTypeCode.Picklist: case AttributeTypeCode.State: case AttributeTypeCode.Status: return(crmAttribute.Name + "?"); case AttributeTypeCode.BigInt: return("long?"); case AttributeTypeCode.Integer: return("int?"); case AttributeTypeCode.Boolean: return("bool?"); case AttributeTypeCode.DateTime: if (crmAttribute.DateTimeBehavior == null) { return("DateTime?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly) { return("Date?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent) { return("DateTime?"); } else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal) { return("DateTime?"); } return("DateTime?"); case AttributeTypeCode.Decimal: return("decimal?"); case AttributeTypeCode.Money: return("decimal?"); case AttributeTypeCode.Double: return("double?"); case AttributeTypeCode.Uniqueidentifier: return("Guid?"); case AttributeTypeCode.Lookup: case AttributeTypeCode.Owner: case AttributeTypeCode.Customer: return("EntityReference"); case AttributeTypeCode.Memo: case AttributeTypeCode.Virtual: case AttributeTypeCode.EntityName: case AttributeTypeCode.String: return("string"); case AttributeTypeCode.PartyList: return("List<ActivityParty>"); case AttributeTypeCode.ManagedProperty: return("?"); default: return("?"); } }