Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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)));
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
            }
        }