public static void RemoveInvalidAttributes(Entity source, TargetFieldType targetFieldType) { foreach (var attribute in source.Attributes.ToArray()) { switch (targetFieldType) { case TargetFieldType.All: case TargetFieldType.ValidForRead: break; case TargetFieldType.ValidForCreate: if (InvalidForCreate.Contains(attribute.Key)) { source.Attributes.Remove(attribute.Key); } break; case TargetFieldType.ValidForUpdate: if (InvalidForUpdate.Contains(attribute.Key)) { source.Attributes.Remove(attribute.Key); } break; default: throw new EnumCaseUndefinedException <TargetFieldType>(targetFieldType); } } }
/// <summary>Initializes a new instance of the <see cref="T:Microsoft.Crm.Sdk.Messages.InitializeFromRequest"></see> class.</summary> public InitializeFromRequest() { this.RequestName = "InitializeFrom"; this.EntityMoniker = (EntityReference)null; this.TargetEntityName = (string)null; this.TargetFieldType = TargetFieldType.All; }
/// <summary> /// Creates a table row from another table row using standard columns /// mapping /// </summary> /// <typeparam name="T">Type of the targeted table</typeparam> /// <param name="service">Dataverse Organization service</param> /// <param name="sourceRef">Reference to the source row</param> /// <param name="type">Mapping columns type</param> /// <param name="additionalColumns">Additional columns to add to the generated row</param> /// <returns>Created row</returns> public static T CreateFromInitialization <T>(this IOrganizationService service, EntityReference sourceRef, TargetFieldType type, Dictionary <string, object> additionalColumns = null) where T : Entity { string entityName = typeof(T).GetField("EntityLogicalName").GetRawConstantValue().ToString(); Entity entity = service.CreateFromInitialization(entityName, sourceRef, type, additionalColumns); return(entity.ToEntity <T>()); }
/// <summary> /// Creates a table row from another table row using standard columns /// mapping /// </summary> /// <param name="service">Dataverse Organization service</param> /// <param name="entityLogicalname">Logical name of the targeted table</param> /// <param name="sourceRef">Reference to the source row</param> /// <param name="type">Mapping columns type</param> /// <param name="additionalColumns">Additional columns to add to the generated row</param> /// <returns>Created row</returns> public static Entity CreateFromInitialization(this IOrganizationService service, string entityLogicalname, EntityReference sourceRef, TargetFieldType type, Dictionary <string, object> additionalColumns = null) { var request = new InitializeFromRequest { EntityMoniker = sourceRef, TargetEntityName = entityLogicalname, TargetFieldType = type }; var response = (InitializeFromResponse)service.Execute(request); if (additionalColumns?.Count > 0) { foreach (var key in additionalColumns.Keys) { response.Entity[key] = additionalColumns[key]; } } response.Entity.Id = service.Create(response.Entity); return(response.Entity); }
/// <summary> /// Utilizes the standard OOB Mappings from CRM to hydrate fields on child record from a parent. /// </summary> /// <typeparam name="T">The Entity Type to Return</typeparam> /// <param name="service">The service.</param> /// <param name="parentEntity">The Parent Entity.</param> /// <param name="targetFieldType">The Target Field Type</param> /// <returns></returns> public static T InitializeFrom <T>(this IOrganizationService service, EntityReference parentEntity, TargetFieldType targetFieldType = TargetFieldType.All) where T : Entity { var initialize = new InitializeFromRequest { TargetEntityName = EntityHelper.GetEntityLogicalName <T>(), EntityMoniker = parentEntity, TargetFieldType = targetFieldType }; var initialized = (InitializeFromResponse)service.Execute(initialize); return(initialized.Entity.AsEntity <T>()); }
/// <summary> /// Utilizes the standard OOB Mappings from CRM to hydrate fields on child record from a parent. /// </summary> /// <param name="service">The service.</param> /// <param name="parentEntity">The Parent Entity.</param> /// <param name="childLogicalName">The logical name of the child</param> /// <param name="targetFieldType">The Target Field Type</param> /// <returns></returns> public static Entity InitializeFrom(this IOrganizationService service, EntityReference parentEntity, string childLogicalName, TargetFieldType targetFieldType = TargetFieldType.All) { var initialize = new InitializeFromRequest { TargetEntityName = childLogicalName, EntityMoniker = parentEntity, TargetFieldType = targetFieldType }; var initialized = (InitializeFromResponse)service.Execute(initialize); return(initialized.Entity); }