Esempio n. 1
0
        private async Task Insert(IScenarioContext context, string json, TableItAllColumnTypes table)
        {
            var doc = JsonDocument.Parse(json);

            var tableName = table.FullName.AsExprTableFullName().TableName.Name;

            foreach (var obj in doc.RootElement.EnumerateObject())
            {
                if (obj.Name != tableName)
                {
                    throw new Exception($"Unexpected property: {obj.Name}");
                }

                var rowsEnumerable = obj.Value.EnumerateArray()
                                     .Select(rowArray =>
                {
                    int colIndex = 0;
                    var row      = new ExprValue[table.Columns.Count];
                    foreach (var cell in rowArray.EnumerateArray())
                    {
                        row[colIndex] = table.Columns[colIndex]
                                        .FromString(cell.ValueKind == JsonValueKind.Null ? null : cell.GetString());
                        colIndex++;
                    }

                    return(row);
                });

                await SqQueryBuilder
                .IdentityInsertInto(table, table.Columns.Select(c => c.ColumnName).ToList())
                .Values(rowsEnumerable)
                .Exec(context.Database);
            }
        }