// remove base type properties from the derived types. internal void RemoveBaseTypeProperties(EntityTypeConfiguration derivedEntity, EntityTypeConfiguration baseEntity) { IEnumerable <EntityTypeConfiguration> typesToLift = new[] { derivedEntity }.Concat(this.DerivedTypes(derivedEntity)); foreach (PropertyConfiguration property in baseEntity.Properties.Concat(baseEntity.DerivedProperties())) { foreach (EntityTypeConfiguration entity in typesToLift) { PropertyConfiguration derivedPropertyToRemove = entity.Properties.Where(p => p.Name == property.Name).SingleOrDefault(); if (derivedPropertyToRemove != null) { entity.RemoveProperty(derivedPropertyToRemove.PropertyInfo); } } } foreach (PropertyInfo ignoredProperty in baseEntity.IgnoredProperties()) { foreach (EntityTypeConfiguration entity in typesToLift) { PropertyConfiguration derivedPropertyToRemove = entity.Properties.Where(p => p.Name == ignoredProperty.Name).SingleOrDefault(); if (derivedPropertyToRemove != null) { entity.RemoveProperty(derivedPropertyToRemove.PropertyInfo); } } } }