public ModelContext LoadModel(ModelDeclaration declaration) { var result = new EntityModelRoot(); var tableName = declaration.GetParameter("tableName"); var databaseInfo = new DatabaseInfo { Server = declaration.GetParameter("server"), Name = declaration.GetParameter("db"), User = declaration.GetParameter("user"), Password = declaration.GetParameter("password") }; var query = TableMetadataQuery; AppTrace.Verbose($"Loading metadata from database {databaseInfo.Name} on {databaseInfo.Server} instance."); if (!string.IsNullOrWhiteSpace(tableName)) { query = string.Concat(query, " and tbl.TABLE_NAME = @TableName"); } using (var connection = new SqlConnection(SqlHelper.GetConnectionString(databaseInfo))) { var lines = connection.Query <DbObjectLine>(TableMetadataQuery, new { TableName = tableName }); var grouped = lines.GroupBy(l => l.ObjectName); foreach (var g in grouped) { var m = new EntityModel { ObjectName = SafeName(g.Key) }; m.AddProperties(g.OrderBy(p => p.PropertyPosition).Select(p => new PropertyModel { DateTimePrecision = p.DateTimePrecision, PropertyDefaultValue = p.PropertyDefaultValue, PropertyLength = p.PropertyLength, PropertyName = p.PropertyName, PropertyPosition = p.PropertyPosition, PropertyPrecision = p.PropertyPrecision, PropertyPrecisionRadix = p.PropertyPrecisionRadix, PropertySqlDataType = p.PropertySqlDataType, Scale = p.Scale, SqlIsNullable = p.SqlIsNullable })); result.AddModels(new[] { m }); } } AppTrace.Verbose($"Loaded { result.Entities.Count() } models."); return(new ModelContext(declaration, new DbModel(result, ModelFormat.Clr, declaration.ModelName, declaration.Tags))); }
public ModelContext LoadModel(ModelDeclaration declaration) { var modelFilePath = declaration.GetParameter(ModelPathParameter); var modelRoot = new ModelContext( declaration, new JsonModel(JObject.Parse(File.ReadAllText(modelFilePath)), ModelFormat.Json, declaration.ModelName, declaration.Tags)); return(modelRoot); }
public ModelContext LoadModel(ModelDeclaration context) { var modelFilePath = context.GetParameter(ModelPathParameter); using (var file = File.OpenRead(modelFilePath)) { var document = XDocument.Load(file); return(new ModelContext(context, new XmlModel(document, ModelFormat.Xml, context.ModelName, context.Tags))); } }
public bool ValidateArguments(ModelDeclaration context) { if (string.IsNullOrWhiteSpace(context.GetParameter(ModelPathParameter))) { // TODO: this should be a validation service AppTrace.Error($"The parameter {ModelPathParameter} is required."); return(false); } return(true); }
public ModelContext LoadModel(ModelDeclaration context) { var modelFilePath = context.GetParameter(ModelPathParameter); using (var reader = new StreamReader(modelFilePath)) { var yamlStream = new YamlStream(); yamlStream.Load(reader); var model = yamlStream.Documents.FirstOrDefault()?.RootNode; var modelContext = new ModelContext(context, new YamlModel(model, ModelFormat.Yaml, context.ModelName, context.Tags)); return(modelContext); } }