public EntityContext Generate(GeneratorOptions options, DatabaseModel databaseModel, IRelationalTypeMappingSource typeMappingSource) { if (databaseModel == null) { throw new ArgumentNullException(nameof(databaseModel)); } _logger.LogInformation("Building code generation model from database: {databaseName}", databaseModel.DatabaseName); _options = options ?? throw new ArgumentNullException(nameof(options)); _typeMapper = typeMappingSource; var entityContext = new EntityContext(); entityContext.DatabaseName = databaseModel.DatabaseName; // update database variables _options.Database.Name = ToLegalName(databaseModel.DatabaseName); string projectNamespace = _options.Project.Namespace; _options.Project.Namespace = projectNamespace; string contextClass = _options.Data.Context.Name; contextClass = _namer.UniqueClassName(contextClass); string contextNamespace = _options.Data.Context.Namespace; string contextBaseClass = _options.Data.Context.BaseClass; entityContext.ContextClass = contextClass; entityContext.ContextNamespace = contextNamespace; entityContext.ContextBaseClass = contextBaseClass; var tables = databaseModel.Tables; foreach (var table in tables) { if (IsIgnored(table, _options.Database.Exclude)) { _logger.LogDebug(" Skipping Table : {schema}.{name}", table.Schema, table.Name); continue; } _logger.LogDebug(" Processing Table : {schema}.{name}", table.Schema, table.Name); _options.Variables.Set(VariableConstants.TableSchema, ToLegalName(table.Schema)); _options.Variables.Set(VariableConstants.TableName, ToLegalName(table.Name)); var entity = GetEntity(entityContext, table); GetModels(entity); } _options.Variables.Remove(VariableConstants.TableName); _options.Variables.Remove(VariableConstants.TableSchema); return(entityContext); }
public EntityContext Generate(GeneratorOptions options, DatabaseModel databaseModel) { if (databaseModel == null) { throw new ArgumentNullException(nameof(databaseModel)); } _logger.LogInformation($"Building code generation model from database: {databaseModel.DatabaseName}"); _options = options ?? throw new ArgumentNullException(nameof(options)); _typeMapper = GetTypeMapper(); var entityContext = new EntityContext(); entityContext.DatabaseName = databaseModel.DatabaseName; // update database variables _options.Database.Name = ToLegalName(databaseModel.DatabaseName); string projectNamespace = _options.Project.Namespace; _options.Project.Namespace = projectNamespace; string contextClass = _options.Data.Context.Name; contextClass = _namer.UniqueClassName(contextClass); string contextNamespace = _options.Data.Context.Namespace; string contextBaseClass = _options.Data.Context.BaseClass; entityContext.ContextClass = contextClass; entityContext.ContextNamespace = contextNamespace; entityContext.ContextBaseClass = contextBaseClass; var tables = databaseModel.Tables; foreach (var t in tables) { _logger.LogDebug($" Processing Table : {t.Name}"); var entity = GetEntity(entityContext, t); GetModels(entity); } return(entityContext); }