public static object ToCrmType(this object objectValue, CrmDataType crmDataType) { object returnValue = objectValue; if (returnValue == null) { return(returnValue); } switch (crmDataType) { case CrmDataType.UNIQUEIDENTIFIER: if (objectValue.GetType() == typeof(string)) { returnValue = new Guid(objectValue.ToString()); } break; case CrmDataType.STRING: returnValue = returnValue.ToString(); break; case CrmDataType.INT: returnValue = Convert.ToInt32(returnValue); break; case CrmDataType.DATETIME: returnValue = Convert.ToDateTime(returnValue); break; case CrmDataType.ENTITYREFERENCE: if (objectValue.GetType() == typeof(EntityReferenceWrapper)) { returnValue = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference(); } break; case CrmDataType.OPTIONSETVALUE: if (objectValue.GetType() == typeof(OptionSetValueWrapper)) { returnValue = ((OptionSetValueWrapper)objectValue).ToCrmOptionSetValue(); } break; case CrmDataType.MONEY: returnValue = new Money(Convert.ToDecimal(objectValue)); break; case CrmDataType.DECIMAL: returnValue = Convert.ToDecimal(objectValue); break; default: break; } return(returnValue); }
public static Entity ToCrmEntity(this object entityObject) { Entity returnValue = null; if (entityObject == null) { return(null); } System.Reflection.MemberInfo info = entityObject.GetType(); var schemaAttr = info.GetCustomAttributes(typeof(CrmSchemaName), false).OfType <CrmSchemaName>().FirstOrDefault(); if (schemaAttr != null) { string entityName = schemaAttr.SchemaName; returnValue = new Entity(entityName); } else { return(null); } PropertyInfo[] properties = entityObject.GetType().GetProperties(); foreach (PropertyInfo p in properties) { var attrFiledName = p.GetCustomAttributes(typeof(CrmFieldName), false).OfType <CrmFieldName>().FirstOrDefault(); var attrFiledDataType = p.GetCustomAttributes(typeof(CrmFieldDataType), false).OfType <CrmFieldDataType>().FirstOrDefault(); if (attrFiledName == null || attrFiledDataType == null) { continue; } string fieldName = attrFiledName.FieldName; CrmDataType fieldDataType = attrFiledDataType.CrmDataType; var objectValue = entityObject.GetType().GetProperty(p.Name).GetValue(entityObject, null); if (objectValue != null) { object crmFieldValue = objectValue.ToCrmType(fieldDataType); if (objectValue.GetType() == typeof(Guid) && (Guid)crmFieldValue == Guid.Empty) { continue; } returnValue[fieldName] = crmFieldValue; } } return(returnValue); }
public CrmFieldDataType(CrmDataType dataType) { this._dataType = dataType; }
public static object ToCrmType(this object objectValue, CrmDataType crmDataType) { object returnValue = objectValue; if (returnValue == null) { return(returnValue); } switch (crmDataType) { case CrmDataType.UNIQUEIDENTIFIER: if (objectValue.GetType() == typeof(string)) { returnValue = new Guid(objectValue.ToString()); } break; case CrmDataType.STRING: returnValue = returnValue.ToString(); break; case CrmDataType.INT: returnValue = Convert.ToInt32(returnValue); break; case CrmDataType.SMALLINT: returnValue = Convert.ToInt16(returnValue); break; case CrmDataType.DATETIME: returnValue = Convert.ToDateTime(returnValue); break; case CrmDataType.ENTITYREFERENCE: if (objectValue.GetType() == typeof(EntityReferenceWrapper)) { returnValue = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference(); } break; case CrmDataType.OPTIONSETVALUE: if (objectValue.GetType() == typeof(OptionSetValueWrapper)) { returnValue = ((OptionSetValueWrapper)objectValue).ToCrmOptionSetValue(); } break; case CrmDataType.MONEY: returnValue = new Money(Convert.ToDecimal(objectValue)); break; case CrmDataType.DECIMAL: returnValue = Convert.ToDecimal(objectValue); break; case CrmDataType.BOOL: returnValue = Convert.ToBoolean(objectValue); break; case CrmDataType.ACTIVITYPARTY: if (objectValue.GetType() == typeof(EntityReferenceWrapper)) { Entity party = new Entity("activityparty"); party["partyid"] = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference(); returnValue = new Entity[] { party }; } break; case CrmDataType.DOUBLE: returnValue = Convert.ToDouble(returnValue); break; default: break; } return(returnValue); }