コード例 #1
0
        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);
        }