internal Guid CreateActivityParty(Entity entity)
 {
     if (entity.GetType() == typeof(Entity))
     {
         entity = GenericMethodCaller.InvokeToEntity(entity, Info);
     }
     return((Guid)GenericMethodCaller.InvokeLocalCrmDatabaseStaticGenericMethod(Info, entity.LogicalName, "Create", this, entity));
 }
        public Guid Create(Entity entity)
        {
            AssertValidForOperation(entity, nameof(Create));
            if (entity.GetType() == typeof(Entity))
            {
                entity = GenericMethodCaller.InvokeToEntity(entity, Info);
            }

            return((Guid)GenericMethodCaller.InvokeLocalCrmDatabaseStaticGenericMethod(Info, entity.LogicalName, nameof(Create), this, entity));
        }
        public void Update(Entity entity)
        {
            AssertValidForOperation(entity, "Update");
            if (entity.GetType() == typeof(Entity))
            {
                entity = GenericMethodCaller.InvokeToEntity(entity, Info);
            }

            GenericMethodCaller.InvokeLocalCrmDatabaseStaticGenericMethod(Info, entity.LogicalName, "Update", this, entity);
        }
Exemplo n.º 4
0
        /// <summary>
        /// CRM will convert non typed arrays into an IEnumerable&lt;T&gt;.  Handle that conversion here
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity">The entity.</param>
        /// <param name="key">The key.</param>
        /// <param name="properties">The properties.</param>
        private static void ConvertEntityArrayToEntityCollection <T>(T entity, string key, Dictionary <string, List <PropertyInfo> > properties) where T : Entity
        {
            if (!(entity[key] is Array value) || value.Length == 0)
            {
                return;
            }
            var prop        = properties[key].FirstOrDefault(p => p.PropertyType.GetGenericArguments().Length >= 0);
            var genericArgs = prop?.PropertyType.GetGenericArguments()[0];

            // ReSharper disable once SuspiciousTypeConversion.Global
            if (genericArgs != null && value is IEnumerable <Entity> entityEnumerable && IsSameOrSubclass(typeof(Entity), genericArgs))
            {
                var entities = new EntityCollection();
                foreach (var att in entityEnumerable)
                {
                    entities.Entities.Add(GenericMethodCaller.InvokeToEntity(att, genericArgs));
                }
                entity[key] = entities;
            }
        }