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