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);
        }
Example #2
0
        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);
        }