private void Execute(object parameter) { string errorMessage = string.Empty; Metadata.UseServer(Settings.DataHost); Metadata.UseDatabase(Settings.Database); string sql; FileInfo file = new FileInfo(FileFullPath); if (file.Extension == ".sql") { sql = QueryScript; } else { sql = Scripting.PrepareScript(QueryScript, out IList <ParseError> errors); foreach (ParseError error in errors) { errorMessage += error.Message + Environment.NewLine; } if (errors.Count > 0) { QueryEditorView errorsView = new QueryEditorView() { DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting) { QueryScript = errorMessage } }; Shell.AddTabItem("Errors", errorsView); return; } } string json = "[]"; try { json = Scripting.ExecuteScript(sql, out IList <ParseError> executeErrors); foreach (ParseError error in executeErrors) { errorMessage += error.Message + Environment.NewLine; } if (executeErrors.Count > 0) { QueryEditorView errorsView = new QueryEditorView() { DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting) { QueryScript = errorMessage } }; Shell.AddTabItem("Errors", errorsView); return; } } catch (Exception ex) { QueryEditorView errorsView = new QueryEditorView() { DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting) { QueryScript = ex.Message } }; Shell.AddTabItem("Error", errorsView); return; } JsonSerializerOptions serializerOptions = new JsonSerializerOptions(); serializerOptions.Converters.Add(new DynamicJsonConverter()); dynamic data = JsonSerializer.Deserialize <dynamic>(json, serializerOptions); //QueryEditorView view = new QueryEditorView() //{ // DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting) { QueryScript = json } //}; //Grid view = CreateDynamicGrid(data); DataGrid view = CreateDynamicDataGrid(data); Shell.AddTabItem($"{file.Name} - result", view); }