public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings) { var entityName = EntityType.Name.RemoveSpecialChar(); var serviceHost = new EfTextTemplateHost { EntityType = EntityType, EntityContainer = modelGenerator.EntityContainer, Namespace = TemplateCommon.serviceNamespace, ModelsNamespace = TemplateCommon.modelsNamespace, MappingNamespace = TemplateCommon.mappingNamespace, RepositoryBaseNamespace = TemplateCommon.repositoryBaseNamespace, CoreNamespace = TemplateCommon.coreNamespace, RepositoryNamespace = TemplateCommon.repositoryNamespace, EntityFrameworkVersion = TemplateCommon.entityFrameworkVersion, TableSet = mappings.EntityMappings[EntityType].Item1, PropertyToColumnMappings = mappings.EntityMappings[EntityType].Item2, ManyToManyMappings = mappings.ManyToManyMappings, EntityName = entityName }; var serviceContents = templateProcessor.Process(Templates.ServiceTemplate, serviceHost); var servicePath = Path.Combine(Directory, entityName + "Service" + serviceHost.FileExtension); FileGenerator.AddNewFile(servicePath, serviceContents); }
public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings) { var contextHost = new EfTextTemplateHost { EntityContainer = modelGenerator.EntityContainer, Namespace = TemplateCommon.modelsNamespace, ModelsNamespace = TemplateCommon.modelsNamespace, MappingNamespace = TemplateCommon.mappingNamespace, EntityFrameworkVersion = TemplateCommon.entityFrameworkVersion }; var contextContents = templateProcessor.Process(Templates.ContextTemplate, contextHost); var contextFilePath = Path.Combine(Directory, modelGenerator.EntityContainer.Name + contextHost.FileExtension); FileGenerator.AddNewFile(contextFilePath, contextContents); }
public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings) { var entityName = EntityType.Name.RemoveSpecialChar(); // Generate the entity file var entityHost = new EfTextTemplateHost { EntityType = EntityType, EntityContainer = modelGenerator.EntityContainer, Namespace = Namespace, ModelsNamespace = Namespace, MappingNamespace = TemplateCommon.mappingNamespace, EntityFrameworkVersion = TemplateCommon.entityFrameworkVersion, TableSet = mappings.EntityMappings[EntityType].Item1, PropertyToColumnMappings = mappings.EntityMappings[EntityType].Item2, ManyToManyMappings = mappings.ManyToManyMappings, EntityName = entityName }; var entityContents = templateProcessor.Process(Templates.EntityTemplate, entityHost); var filePath = Path.Combine(Directory, entityName + entityHost.FileExtension); FileGenerator.AddNewFile(filePath, entityContents); }
public void ReverseEngineerCodeFirst() { try { // Find connection string and provider string connectionString = "data source=172.21.4.31,10086;initial catalog=Eme4;user id=eme;password=io77@68;MultipleActiveResultSets=True;App=EntityFramework""; var providerInvariant = "System.Data.SqlClient"; string projectNamespace = "TEST"; string currentDirectory = System.IO.Directory.GetCurrentDirectory(); DbConnection connection = new SqlConnection(connectionString); // Load store schema var storeGenerator = new EntityStoreSchemaGenerator(providerInvariant, connectionString, "dbo"); storeGenerator.GenerateForeignKeyProperties = true; var errors = storeGenerator.GenerateStoreMetadata(_storeMetadataFilters).Where(e => e.Severity == EdmSchemaErrorSeverity.Error); // Generate default mapping var contextName = connection.Database.Replace(" ", string.Empty).Replace(".", string.Empty) + "Context"; var modelGenerator = new EntityModelSchemaGenerator(storeGenerator.EntityContainer, "DefaultNamespace", contextName); modelGenerator.PluralizationService = PluralizationService.CreateService(new CultureInfo("en")); modelGenerator.GenerateForeignKeyProperties = true; modelGenerator.GenerateMetadata(); // Pull out info about types to be generated var entityTypes = modelGenerator.EdmItemCollection.OfType <EntityType>().ToArray(); var mappings = new EdmMapping(modelGenerator, storeGenerator.StoreItemCollection); // Generate Entity Classes and Mappings var templateProcessor = new TemplateProcessor(); var modelsNamespace = projectNamespace + ".Models"; var modelsDirectory = Path.Combine(currentDirectory, "Models"); var mappingNamespace = modelsNamespace + ".Mapping"; var mappingDirectory = Path.Combine(modelsDirectory, "Mapping"); var entityFrameworkVersion = GetEntityFrameworkVersion(); foreach (var entityType in entityTypes) { // Generate the code file var entityHost = new EfTextTemplateHost { EntityType = entityType, EntityContainer = modelGenerator.EntityContainer, Namespace = modelsNamespace, ModelsNamespace = modelsNamespace, MappingNamespace = mappingNamespace, EntityFrameworkVersion = entityFrameworkVersion, TableSet = mappings.EntityMappings[entityType].Item1, PropertyToColumnMappings = mappings.EntityMappings[entityType].Item2, ManyToManyMappings = mappings.ManyToManyMappings }; var entityContents = templateProcessor.Process(Templates.EntityTemplate, entityHost); var filePath = Path.Combine(modelsDirectory, entityType.Name + entityHost.FileExtension); FileGenerator.AddNewFile(filePath, entityContents); var mappingHost = new EfTextTemplateHost { EntityType = entityType, EntityContainer = modelGenerator.EntityContainer, Namespace = mappingNamespace, ModelsNamespace = modelsNamespace, MappingNamespace = mappingNamespace, EntityFrameworkVersion = entityFrameworkVersion, TableSet = mappings.EntityMappings[entityType].Item1, PropertyToColumnMappings = mappings.EntityMappings[entityType].Item2, ManyToManyMappings = mappings.ManyToManyMappings }; var mappingContents = templateProcessor.Process(Templates.MappingTemplate, mappingHost); var mappingFilePath = Path.Combine(mappingDirectory, entityType.Name + "Map" + mappingHost.FileExtension); FileGenerator.AddNewFile(filePath, entityContents); } // Generate Context var contextHost = new EfTextTemplateHost { EntityContainer = modelGenerator.EntityContainer, Namespace = modelsNamespace, ModelsNamespace = modelsNamespace, MappingNamespace = mappingNamespace, EntityFrameworkVersion = entityFrameworkVersion }; var contextContents = templateProcessor.Process(Templates.ContextTemplate, contextHost); var contextFilePath = Path.Combine(modelsDirectory, modelGenerator.EntityContainer.Name + contextHost.FileExtension); FileGenerator.AddNewFile(contextFilePath, contextContents); } catch (Exception exception) { } }