private void GetModels(Entity entity)
        {
            if (entity == null || entity.Models.IsProcessed)
            {
                return;
            }

            _options.Variables.Set(entity);

            if (_options.Model.Read.Generate)
            {
                CreateModel(entity, _options.Model.Read, ModelType.Read);
            }
            if (_options.Model.Create.Generate)
            {
                CreateModel(entity, _options.Model.Create, ModelType.Create);
            }
            if (_options.Model.Update.Generate)
            {
                CreateModel(entity, _options.Model.Update, ModelType.Update);
            }

            if (entity.Models.Count > 0)
            {
                var mapperNamespace = _options.Model.Mapper.Namespace;

                var mapperClass = ToLegalName(_options.Model.Mapper.Name);
                mapperClass = _namer.UniqueModelName(mapperNamespace, mapperClass);

                entity.MapperClass     = mapperClass;
                entity.MapperNamespace = mapperNamespace;
                entity.MapperBaseClass = _options.Model.Mapper.BaseClass;
            }

            _options.Variables.Remove(entity);

            entity.Models.IsProcessed = true;
        }
Exemplo n.º 2
0
        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.UniqueModelName(projectNamespace, 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 : {tableName}", t.Name);

                var entity = GetEntity(entityContext, t);
                GetModels(entity);
            }

            return(entityContext);
        }