Example #1
0
            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;
 }
Example #3
0
        /// <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>());
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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>());
        }
Example #6
0
        /// <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);
        }