From 2835e7d799ef47e813859d38d72ee131842cfea5 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Wed, 9 Sep 2026 16:02:42 +0400 Subject: [PATCH 1/9] checks if tables exists in DB. Changed DB name to prevent confusion. Checks if SQL server exists (that last part doesn't work) --- CS/PivotTableBindToData/Pages/Index.razor | 5 ++- .../SalesDb/SalesDataGenerator.cs | 34 ++++++++++++++----- .../SalesDb/Scripts/SqlServerDbGenerator.sql | 12 +++++++ CS/PivotTableBindToData/appsettings.json | 2 +- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/CS/PivotTableBindToData/Pages/Index.razor b/CS/PivotTableBindToData/Pages/Index.razor index 1d9d1c2..54278c2 100644 --- a/CS/PivotTableBindToData/Pages/Index.razor +++ b/CS/PivotTableBindToData/Pages/Index.razor @@ -26,13 +26,16 @@ } else if (DataExists == false) {
-

The Sales table (or the database file) was not found.

+

The Sales table was not found.

@if (IsGenerating) {

Generating 1,000,000 rows, please wait...

}
} +else { +

Checking for data...

+} @code { SalesContext SalesContext { get; set; } diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index 301583c..db3c9c7 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -1,6 +1,9 @@ -using System.Reflection; +using System.Reflection; using System.Text.RegularExpressions; +using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; #nullable disable @@ -8,13 +11,8 @@ namespace PivotTableBindToData.SalesDb { public static class SalesDataGenerator { public static async Task SalesTableExistsAsync(SalesContext context) { - try { - await context.Sales.Select(s => s.SaleId).Take(1).ToListAsync(); - return true; - } - catch { - return false; - } + var databaseCreator = context.GetService(); + return await databaseCreator.HasTablesAsync(); } public static async Task GenerateAsync(SalesContext context, string dataProvider) { @@ -28,7 +26,25 @@ public static async Task GenerateAsync(SalesContext context, string dataProvider var batches = Regex.Split(script, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase) .Select(batch => batch.Trim()) - .Where(batch => batch.Length > 0); + .Where(batch => batch.Length > 0) + .ToList(); + + if (dataProvider == nameof(DataProviders.SqlServer)) { + var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()) { + InitialCatalog = "master" + }; + + await using var connection = new SqlConnection(connectionStringBuilder.ConnectionString); + await connection.OpenAsync(); + + foreach (var batch in batches) { + await using var command = connection.CreateCommand(); + command.CommandText = batch; + command.CommandTimeout = 0; + await command.ExecuteNonQueryAsync(); + } + return; + } context.Database.SetCommandTimeout(0); diff --git a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql index ffe98c9..ba984f3 100644 --- a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql +++ b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql @@ -1,3 +1,15 @@ +USE [master]; +GO + +IF DB_ID(N'DevExpressExampleT1332466') IS NULL +BEGIN + CREATE DATABASE [DevExpressExampleT1332466]; +END +GO + +USE [DevExpressExampleT1332466]; +GO + IF OBJECT_ID('dbo.Sales', 'U') IS NOT NULL DROP TABLE dbo.Sales; GO diff --git a/CS/PivotTableBindToData/appsettings.json b/CS/PivotTableBindToData/appsettings.json index a8cfe78..762ff09 100644 --- a/CS/PivotTableBindToData/appsettings.json +++ b/CS/PivotTableBindToData/appsettings.json @@ -1,7 +1,7 @@ { "DataProvider": "SQLite", // SQLite or SqlServer "ConnectionStrings": { - "SalesDatabase": "Server=(localdb)\\MSSQLLocalDB;Database=Example;Trusted_Connection=True;" + "SalesDatabase": "Server=(localdb)\\MSSQLLocalDB;Database=DevExpressExampleT1332466;Trusted_Connection=True;" }, "Logging": { "LogLevel": { From ca9b2b1eee9435388eb203be6f994b539357a389 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Wed, 9 Sep 2026 19:24:44 +0400 Subject: [PATCH 2/9] Checking DB and table existence --- .../SalesDb/SalesDataGenerator.cs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index db3c9c7..9ea4b9b 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -1,9 +1,7 @@ -using System.Reflection; +using System.Reflection; using System.Text.RegularExpressions; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage; #nullable disable @@ -11,8 +9,26 @@ namespace PivotTableBindToData.SalesDb { public static class SalesDataGenerator { public static async Task SalesTableExistsAsync(SalesContext context) { - var databaseCreator = context.GetService(); - return await databaseCreator.HasTablesAsync(); + if (!await DatabaseExistsAsync(context)) + return false; + return await SalesTableExistsInDatabaseAsync(context); + } + + static async Task DatabaseExistsAsync(SalesContext context) { + return await context.Database.CanConnectAsync(); + } + + static async Task SalesTableExistsInDatabaseAsync(SalesContext context) { + string sql = context.Database.ProviderName switch { + "Microsoft.EntityFrameworkCore.Sqlite" => + "SELECT count(*) AS [Value] FROM sqlite_master WHERE type = 'table' AND name = 'Sales'", + "Microsoft.EntityFrameworkCore.SqlServer" => + "SELECT count(*) AS [Value] FROM sys.tables WHERE name = 'Sales'", + var provider => throw new NotSupportedException($"Unsupported database provider: '{provider}'.") + }; + + int tableCount = await context.Database.SqlQueryRaw(sql).SingleAsync(); + return tableCount > 0; } public static async Task GenerateAsync(SalesContext context, string dataProvider) { From 440f4356e34d97bdaa87be9141dc117f9c482518 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Thu, 10 Sep 2026 12:37:30 +0400 Subject: [PATCH 3/9] unified DB provider check --- CS/PivotTableBindToData/Pages/Index.razor | 3 +- CS/PivotTableBindToData/Program.cs | 30 +++++++++++-------- .../SalesDb/DataProviders.cs | 12 +++++++- .../SalesDb/SalesDataGenerator.cs | 18 ++++++----- 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/CS/PivotTableBindToData/Pages/Index.razor b/CS/PivotTableBindToData/Pages/Index.razor index 54278c2..6514de4 100644 --- a/CS/PivotTableBindToData/Pages/Index.razor +++ b/CS/PivotTableBindToData/Pages/Index.razor @@ -4,7 +4,6 @@ @using Microsoft.EntityFrameworkCore @using DevExpress.Data.Linq @inject IDbContextFactory SalesContextFactory -@inject IConfiguration Configuration @implements IAsyncDisposable @using DevExpress.Blazor.PivotTable @@ -61,7 +60,7 @@ else { IsGenerating = true; StateHasChanged(); - await Task.Run(() => SalesDataGenerator.GenerateAsync(SalesContext, Configuration.GetValue("DataProvider", DataProviders.SQLite.ToString()))); + await Task.Run(() => SalesDataGenerator.GenerateAsync(SalesContext)); CreateDataSource(); DataExists = true; diff --git a/CS/PivotTableBindToData/Program.cs b/CS/PivotTableBindToData/Program.cs index 2d2f5c8..c4ae22e 100644 --- a/CS/PivotTableBindToData/Program.cs +++ b/CS/PivotTableBindToData/Program.cs @@ -9,19 +9,23 @@ builder.Services.AddDevExpressBlazor(); -var dataProviderSetting = builder.Configuration.GetValue("DataProvider", DataProviders.SQLite.ToString()); - -if (dataProviderSetting == DataProviders.SQLite.ToString()) { - builder.Services.AddDbContextFactory((sp, options) => { - var env = sp.GetRequiredService(); - var dbPath = Path.Combine(env.ContentRootPath, "sales.db"); - options.UseSqlite("Data Source=" + dbPath); - }); -} -else if (dataProviderSetting == DataProviders.SqlServer.ToString()) { - builder.Services.AddDbContextFactory(options => { - options.UseSqlServer(builder.Configuration.GetConnectionString("SalesDatabase")); - }); +var dataProvider = builder.Configuration.GetValue("DataProvider", DataProviders.SQLite); + +switch (dataProvider) { + case DataProviders.SQLite: + builder.Services.AddDbContextFactory((sp, options) => { + var env = sp.GetRequiredService(); + var dbPath = Path.Combine(env.ContentRootPath, "sales.db"); + options.UseSqlite("Data Source=" + dbPath); + }); + break; + case DataProviders.SqlServer: + builder.Services.AddDbContextFactory(options => { + options.UseSqlServer(builder.Configuration.GetConnectionString("SalesDatabase")); + }); + break; + default: + throw new NotSupportedException($"Unsupported database provider: '{dataProvider}'."); } var app = builder.Build(); diff --git a/CS/PivotTableBindToData/SalesDb/DataProviders.cs b/CS/PivotTableBindToData/SalesDb/DataProviders.cs index 04a6755..1faa052 100644 --- a/CS/PivotTableBindToData/SalesDb/DataProviders.cs +++ b/CS/PivotTableBindToData/SalesDb/DataProviders.cs @@ -1,6 +1,16 @@ -namespace PivotTableBindToData.SalesDb { +using System; + +namespace PivotTableBindToData.SalesDb { public enum DataProviders { SQLite, SqlServer } + + public static class DataProvidersExtensions { + public static DataProviders FromEFProviderName(string efProviderName) => efProviderName switch { + "Microsoft.EntityFrameworkCore.Sqlite" => DataProviders.SQLite, + "Microsoft.EntityFrameworkCore.SqlServer" => DataProviders.SqlServer, + _ => throw new NotSupportedException($"Unsupported database provider: '{efProviderName}'.") + }; + } } diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index 9ea4b9b..624ef98 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -19,10 +19,10 @@ static async Task DatabaseExistsAsync(SalesContext context) { } static async Task SalesTableExistsInDatabaseAsync(SalesContext context) { - string sql = context.Database.ProviderName switch { - "Microsoft.EntityFrameworkCore.Sqlite" => + string sql = GetDataProvider(context) switch { + DataProviders.SQLite => "SELECT count(*) AS [Value] FROM sqlite_master WHERE type = 'table' AND name = 'Sales'", - "Microsoft.EntityFrameworkCore.SqlServer" => + DataProviders.SqlServer => "SELECT count(*) AS [Value] FROM sys.tables WHERE name = 'Sales'", var provider => throw new NotSupportedException($"Unsupported database provider: '{provider}'.") }; @@ -31,10 +31,11 @@ static async Task SalesTableExistsInDatabaseAsync(SalesContext context) { return tableCount > 0; } - public static async Task GenerateAsync(SalesContext context, string dataProvider) { + public static async Task GenerateAsync(SalesContext context) { + var dataProvider = GetDataProvider(context); string resourceName = dataProvider switch { - nameof(DataProviders.SQLite) => "PivotTableBindToData.SalesDb.Scripts.SQLiteDbGenerator.sql", - nameof(DataProviders.SqlServer) => "PivotTableBindToData.SalesDb.Scripts.SqlServerDbGenerator.sql", + DataProviders.SQLite => "PivotTableBindToData.SalesDb.Scripts.SQLiteDbGenerator.sql", + DataProviders.SqlServer => "PivotTableBindToData.SalesDb.Scripts.SqlServerDbGenerator.sql", _ => "" }; @@ -45,7 +46,7 @@ public static async Task GenerateAsync(SalesContext context, string dataProvider .Where(batch => batch.Length > 0) .ToList(); - if (dataProvider == nameof(DataProviders.SqlServer)) { + if (dataProvider == DataProviders.SqlServer) { var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()) { InitialCatalog = "master" }; @@ -68,6 +69,9 @@ public static async Task GenerateAsync(SalesContext context, string dataProvider await context.Database.ExecuteSqlRawAsync(batch); } + static DataProviders GetDataProvider(SalesContext context) => + DataProvidersExtensions.FromEFProviderName(context.Database.ProviderName); + static async Task ReadEmbeddedScriptAsync(string resourceName) { var assembly = Assembly.GetExecutingAssembly(); using var stream = assembly.GetManifestResourceStream(resourceName); From 570c58e3fb4ffed3c9474b2f6edb8b080d8095cb Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Thu, 10 Sep 2026 12:54:20 +0400 Subject: [PATCH 4/9] changed switch to if/else --- CS/PivotTableBindToData/Program.cs | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/CS/PivotTableBindToData/Program.cs b/CS/PivotTableBindToData/Program.cs index c4ae22e..73b0768 100644 --- a/CS/PivotTableBindToData/Program.cs +++ b/CS/PivotTableBindToData/Program.cs @@ -11,21 +11,17 @@ var dataProvider = builder.Configuration.GetValue("DataProvider", DataProviders.SQLite); -switch (dataProvider) { - case DataProviders.SQLite: - builder.Services.AddDbContextFactory((sp, options) => { - var env = sp.GetRequiredService(); - var dbPath = Path.Combine(env.ContentRootPath, "sales.db"); - options.UseSqlite("Data Source=" + dbPath); - }); - break; - case DataProviders.SqlServer: - builder.Services.AddDbContextFactory(options => { - options.UseSqlServer(builder.Configuration.GetConnectionString("SalesDatabase")); - }); - break; - default: - throw new NotSupportedException($"Unsupported database provider: '{dataProvider}'."); +if (dataProvider == DataProviders.SQLite) { + builder.Services.AddDbContextFactory((sp, options) => { + var env = sp.GetRequiredService(); + var dbPath = Path.Combine(env.ContentRootPath, "sales.db"); + options.UseSqlite("Data Source=" + dbPath); + }); +} +else if (dataProvider == DataProviders.SqlServer) { + builder.Services.AddDbContextFactory(options => { + options.UseSqlServer(builder.Configuration.GetConnectionString("SalesDatabase")); + }); } var app = builder.Build(); From 06954274fc2e762ff0fd427b43d221afd1844bc5 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Thu, 10 Sep 2026 13:44:40 +0400 Subject: [PATCH 5/9] fyxed typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6613df..4dec02e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Blazor Pivot Table – Data binding using Entity Framework Core in Server Mode -This example uses [Entity Framework Core](https://learn.microsoft.com/en-us/ef/core/) to bind the [DevExpress Blazor Pivot Table](https://docs.devexpress.com/Blazor/405245/components/pivot-table) to data in Server Mode. This example supports SQLite and SQL Server. The database engine is sonfigured in the `appsettings.json` file. +This example uses [Entity Framework Core](https://learn.microsoft.com/en-us/ef/core/) to bind the [DevExpress Blazor Pivot Table](https://docs.devexpress.com/Blazor/405245/components/pivot-table) to data in Server Mode. This example supports SQLite and SQL Server. The database engine is configured in the `appsettings.json` file. ![Bind DevExpress Blazor Pivot Table to Data with Entity Framework Core](/images/bind-to-data.png) From e4b4b8aea49817b8157c1424465cdcb3aa22fd8c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:01:41 +0000 Subject: [PATCH 6/9] Fix SQL Server generator to use configured database name Co-authored-by: Schullz <6040786+Schullz@users.noreply.github.com> --- .../SalesDb/SalesDataGenerator.cs | 13 ++++++++++--- .../SalesDb/Scripts/SqlServerDbGenerator.sql | 6 +++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index 624ef98..1676060 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -47,9 +47,16 @@ public static async Task GenerateAsync(SalesContext context) { .ToList(); if (dataProvider == DataProviders.SqlServer) { - var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()) { - InitialCatalog = "master" - }; + var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()); + string databaseName = connectionStringBuilder.InitialCatalog; + if (string.IsNullOrWhiteSpace(databaseName)) + throw new InvalidOperationException("The SQL Server connection string must specify a database name."); + + script = script + .Replace("{DatabaseNameLiteral}", databaseName.Replace("'", "''")) + .Replace("{DatabaseNameIdentifier}", databaseName.Replace("]", "]]")); + + connectionStringBuilder.InitialCatalog = "master"; await using var connection = new SqlConnection(connectionStringBuilder.ConnectionString); await connection.OpenAsync(); diff --git a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql index ba984f3..14b2d8b 100644 --- a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql +++ b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql @@ -1,13 +1,13 @@ USE [master]; GO -IF DB_ID(N'DevExpressExampleT1332466') IS NULL +IF DB_ID(N'{DatabaseNameLiteral}') IS NULL BEGIN - CREATE DATABASE [DevExpressExampleT1332466]; + CREATE DATABASE [{DatabaseNameIdentifier}]; END GO -USE [DevExpressExampleT1332466]; +USE [{DatabaseNameIdentifier}]; GO IF OBJECT_ID('dbo.Sales', 'U') IS NOT NULL From 2522ff6a205ff262669a6b10a8bf76122a2fb8b1 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Thu, 10 Sep 2026 16:15:03 +0400 Subject: [PATCH 7/9] simlified; doesn't work --- CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs | 8 +------- .../SalesDb/Scripts/SqlServerDbGenerator.sql | 6 +++--- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index 1676060..70c5c53 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -49,13 +49,7 @@ public static async Task GenerateAsync(SalesContext context) { if (dataProvider == DataProviders.SqlServer) { var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()); string databaseName = connectionStringBuilder.InitialCatalog; - if (string.IsNullOrWhiteSpace(databaseName)) - throw new InvalidOperationException("The SQL Server connection string must specify a database name."); - - script = script - .Replace("{DatabaseNameLiteral}", databaseName.Replace("'", "''")) - .Replace("{DatabaseNameIdentifier}", databaseName.Replace("]", "]]")); - + script = script.Replace("{DatabaseName}", databaseName); connectionStringBuilder.InitialCatalog = "master"; await using var connection = new SqlConnection(connectionStringBuilder.ConnectionString); diff --git a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql index 14b2d8b..1b8fe5b 100644 --- a/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql +++ b/CS/PivotTableBindToData/SalesDb/Scripts/SqlServerDbGenerator.sql @@ -1,13 +1,13 @@ USE [master]; GO -IF DB_ID(N'{DatabaseNameLiteral}') IS NULL +IF DB_ID(N'{DatabaseName}') IS NULL BEGIN - CREATE DATABASE [{DatabaseNameIdentifier}]; + CREATE DATABASE [{DatabaseName}]; END GO -USE [{DatabaseNameIdentifier}]; +USE [{DatabaseName}]; GO IF OBJECT_ID('dbo.Sales', 'U') IS NOT NULL From 7b7db3ab86ed6a0a58eeee45a2c74711b38323d3 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Thu, 10 Sep 2026 16:34:08 +0400 Subject: [PATCH 8/9] fixed. batches are not required for SQLite, as there is no "GO" in SQLite script --- .../SalesDb/SalesDataGenerator.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs index 70c5c53..7592211 100644 --- a/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs +++ b/CS/PivotTableBindToData/SalesDb/SalesDataGenerator.cs @@ -41,10 +41,6 @@ public static async Task GenerateAsync(SalesContext context) { string script = await ReadEmbeddedScriptAsync(resourceName); - var batches = Regex.Split(script, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase) - .Select(batch => batch.Trim()) - .Where(batch => batch.Length > 0) - .ToList(); if (dataProvider == DataProviders.SqlServer) { var connectionStringBuilder = new SqlConnectionStringBuilder(context.Database.GetConnectionString()); @@ -55,6 +51,11 @@ public static async Task GenerateAsync(SalesContext context) { await using var connection = new SqlConnection(connectionStringBuilder.ConnectionString); await connection.OpenAsync(); + var batches = Regex.Split(script, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase) + .Select(batch => batch.Trim()) + .Where(batch => batch.Length > 0) + .ToList(); + foreach (var batch in batches) { await using var command = connection.CreateCommand(); command.CommandText = batch; @@ -65,9 +66,7 @@ public static async Task GenerateAsync(SalesContext context) { } context.Database.SetCommandTimeout(0); - - foreach (var batch in batches) - await context.Database.ExecuteSqlRawAsync(batch); + await context.Database.ExecuteSqlRawAsync(script); } static DataProviders GetDataProvider(SalesContext context) => From 2d32e8886af179d2c2382cebcf473e5d3a9ee6f4 Mon Sep 17 00:00:00 2001 From: Anton Shapovalov Date: Fri, 11 Sep 2026 12:48:36 +0400 Subject: [PATCH 9/9] Changed DB name --- CS/PivotTableBindToData/appsettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CS/PivotTableBindToData/appsettings.json b/CS/PivotTableBindToData/appsettings.json index 762ff09..1c17406 100644 --- a/CS/PivotTableBindToData/appsettings.json +++ b/CS/PivotTableBindToData/appsettings.json @@ -1,7 +1,7 @@ { "DataProvider": "SQLite", // SQLite or SqlServer "ConnectionStrings": { - "SalesDatabase": "Server=(localdb)\\MSSQLLocalDB;Database=DevExpressExampleT1332466;Trusted_Connection=True;" + "SalesDatabase": "Server=(localdb)\\MSSQLLocalDB;Database=DevExpressPivotTableDb;Trusted_Connection=True;" }, "Logging": { "LogLevel": {