Esempio n. 1
0
        public bool HasMany()
        {
            if (this.CollectionMembers.Count > 0)
            {
                return(true);
            }

            foreach (var kv in this.ComplexMembers)
            {
                ComplexObjectActivatorCreator activatorCreator = kv.Value as ComplexObjectActivatorCreator;
                if (activatorCreator.HasMany())
                {
                    return(true);
                }
            }

            return(false);
        }
        public IFitter CreateFitter(IDbContext dbContext)
        {
            IFitter elementFitter = this.ElementActivatorCreator.CreateFitter(dbContext);

            ComplexObjectActivatorCreator elementActivatorCreator = (ComplexObjectActivatorCreator)this.ElementActivatorCreator;
            TypeDescriptor elementTypeDescriptor = EntityTypeContainer.GetDescriptor(elementActivatorCreator.ObjectType);

            List <Tuple <PropertyDescriptor, int> > keys = new List <Tuple <PropertyDescriptor, int> >(elementTypeDescriptor.PrimaryKeys.Count);

            foreach (PrimitivePropertyDescriptor primaryKey in elementTypeDescriptor.PrimaryKeys)
            {
                keys.Add(new Tuple <PropertyDescriptor, int>(primaryKey, elementActivatorCreator.PrimitiveMembers[primaryKey.Definition.Property]));
            }

            IEntityRowComparer entityRowComparer = new EntityRowComparer(keys);

            PropertyDescriptor elementOwnerProperty = elementTypeDescriptor.ComplexPropertyDescriptors.Where(a => a.Definition.Property.PropertyType == this.OwnerType).First();

            CollectionObjectFitter fitter = new CollectionObjectFitter(this.ElementActivatorCreator.CreateObjectActivator(dbContext), entityRowComparer, elementFitter, elementOwnerProperty);

            return(fitter);
        }