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); }