private void CreateConceptualEntity(IEntity entity) { if (entity.IsParentManyToMany()) { _conceptualEntitiesToRemove.Add(ResolveEntityMappedName(entity.EntityKey(), entity.Name)); return; } // Check to see if this has already been processed. if (_conceptualEntitys.Contains(entity.Name)) return; bool isNewView; string previousName; var entitySet = CreateConceptualEntitySet(entity, out previousName, out isNewView); bool isNewEntityType; var entityType = CreateConceptualEntityType(entity, entitySet.Name, previousName, ref isNewView, out isNewEntityType); RemoveDuplicateConceptualEntityTypeKeysAndProperties(entityType); // Remove extra properties values. var properties = from property in entityType.Properties where !(from prop in entity.Properties select prop.KeyName).Contains(property.Name) && _removedStorageEntityProperties.Contains(String.Format(PROPERTY_KEY, entity.EntityKeyName, property.Name).ToLower()) // And it has been removed from the storage model. select property; // Remove all of the key properties that don't exist in the table entity. foreach (var property in properties) { entityType.Properties.Remove(property); } CreateConceptualEntityTypeKeys(entity, isNewView, entityType); CreateConceptualEntityTypeProperties(entity, entityType, isNewEntityType); ValidateConceptualEntityComplexProperties(entity, entityType); _conceptualEntitys.Add(entity.Name); }