public void ResolveNames(EdmxModel edmxModel, ModelErrors errors) { edmxModel.ResolveNames(errors); }
public ModelSchema Build( EdmxModel edmxModel, ModelSchema modelSchema, MetaModelBuilder metaModelBuilder, ModelErrors errors) { if (modelSchema == null) { modelSchema = new ModelSchema(); } //if (metaMappingSchema == null) { metaMappingSchema = new MetaMappingSchema(); } if (metaModelBuilder == null) { metaModelBuilder = new MetaModelBuilder(); } if (!edmxModel.IsFrozen()) { edmxModel.AddCoreSchemaIfNeeded(errors); edmxModel.Freeze(); } var defaultEntityContainers = edmxModel.DataServices.SelectMany(_ => _.EntityContainer).Where(_ => _.IsDefaultEntityContainer).ToList(); if (defaultEntityContainers.Count != 1) { defaultEntityContainers = edmxModel.DataServices.SelectMany(_ => _.EntityContainer).ToList(); } if (defaultEntityContainers.Count != 1) { errors.AddErrorOrThrow($"DefaultEntityContainers #{defaultEntityContainers.Count} found.", "model"); return(modelSchema); } var defaultEntityContainer = defaultEntityContainers[0]; edmxModel.ResolveNames(errors); if (errors.HasErrors()) { return(modelSchema); } foreach (var dataServices in edmxModel.DataServices) { foreach (var scalarTypeModel in dataServices.ScalarTypeModel) { this.BuildScalarType(edmxModel, modelSchema, scalarTypeModel, metaModelBuilder, errors); } } foreach (var dataServices in edmxModel.DataServices) { foreach (var entityTypeModel in dataServices.EntityType) { this.BuildComplexType(edmxModel, modelSchema, entityTypeModel, metaModelBuilder, errors); } } foreach (var dataServices in edmxModel.DataServices) { foreach (var entityTypeModel in dataServices.EntityType) { this.BuildComplexTypeNavigationProperty(edmxModel, modelSchema, entityTypeModel, metaModelBuilder, errors); } } foreach (var dataServices in edmxModel.DataServices) { foreach (var association in dataServices.Association) { this.BuildAssociation(edmxModel, modelSchema, association, metaModelBuilder, errors); } } //foreach (var dataServices in edmxModel.DataServices) { // foreach (var entityContainer in dataServices.EntityContainer) { // if (entityContainer.IsDefaultEntityContainer) { continue; } // } //} foreach (var entitySet in defaultEntityContainer.EntitySet) { var entityTypeModel = entitySet.EntityTypeModel; if (entityTypeModel == null) { errors.AddErrorOrThrow("entitySet.EntityTypeModel not found", entitySet.Name); } else { var entityTypeModelName = entityTypeModel.Name; var entityTypeModelFullName = entityTypeModel.FullName; var modelComplexType = this.BuildComplexType(edmxModel, modelSchema, entityTypeModel, metaModelBuilder, errors); var entitySetName = entitySet.Name; var modelEntity = metaModelBuilder.CreateModelEntity( entitySetName, ModelEntityKind.EntitySet, errors); if (modelEntity.Owner == null) { modelSchema.Entities.Add(modelEntity); } if (modelComplexType is null) { errors.AddErrorOrThrow($"{entityTypeModelFullName ?? entityTypeModelName} not found", entitySet.Name); } else { modelEntity.EntityType = modelComplexType; } } } //foreach (var associationSet in defaultEntityContainer.AssociationSet) { // foreach (var end in associationSet.End) { // if (!(end.EntitySetModel is null)) { // var roleName = d.RoleName; // } // } //} return(modelSchema); }