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; }
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); }