EntityFrameworkCore.MySql.SimpleBulks

December 2, 2025 · View on GitHub

A very simple .net core library that can help to sync a large number of records in-memory into the database using the MySqlBulkCopy class.  

Overview

This library provides extension methods so that you can use with your EntityFrameworkCore DbContext instance DbContextExtensions.cs or you can use ConnectionContextExtensions.cs to work directly with a MySqlConnection instance without using EntityFrameworkCore.

Nuget

DatabasePackageGitHub
SQL ServerEntityFrameworkCore.SqlServer.SimpleBulksEntityFrameworkCore.SqlServer.SimpleBulks
PostgreSQLEntityFrameworkCore.PostgreSQL.SimpleBulksEntityFrameworkCore.PostgreSQL.SimpleBulks
MySQLEntityFrameworkCore.MySQL.SimpleBulksEntityFrameworkCore.MySQL.SimpleBulks

Features

  • Bulk Insert
  • Bulk Update
  • Bulk Delete
  • Bulk Merge
  • Bulk Match
  • Temp Table
  • Direct Insert
  • Direct Update
  • Direct Delete
  • Upsert

Examples

DbContextExtensionsExamples

  • Update the connection string ConnectionStrings.MySqlConnectionString.
  • Build and run.

ConnectionExtensionsExamples

  • Update the connection string ConnectionStrings.MySqlConnectionString.
  • Build and run.

DbContextExtensions

Using Lambda Expression

using EntityFrameworkCore.MySql.SimpleBulks.BulkDelete;
using EntityFrameworkCore.MySql.SimpleBulks.BulkInsert;
using EntityFrameworkCore.MySql.SimpleBulks.BulkMerge;
using EntityFrameworkCore.MySql.SimpleBulks.BulkUpdate;

// Insert all columns
await dbct.BulkInsertAsync(rows);
await dbct.BulkInsertAsync(compositeKeyRows);

// Insert selected columns only
await dbct.BulkInsertAsync(rows,
    row => new { row.Column1, row.Column2, row.Column3 });
await dbct.BulkInsertAsync(compositeKeyRows,
    row => new { row.Id1, row.Id2, row.Column1, row.Column2, row.Column3 });

await dbct.BulkUpdateAsync(rows,
    row => new { row.Column3, row.Column2 });
await dbct.BulkUpdateAsync(compositeKeyRows,
    row => new { row.Column3, row.Column2 });

await dbct.BulkMergeAsync(rows,
    row => row.Id,
    row => new { row.Column1, row.Column2 },
    row => new { row.Column1, row.Column2, row.Column3 });
await dbct.BulkMergeAsync(compositeKeyRows,
    row => new { row.Id1, row.Id2 },
    row => new { row.Column1, row.Column2, row.Column3 },
    row => new { row.Id1, row.Id2, row.Column1, row.Column2, row.Column3 });
                        
await dbct.BulkDeleteAsync(rows);
await dbct.BulkDeleteAsync(compositeKeyRows);

Using Dynamic String

using EntityFrameworkCore.MySql.SimpleBulks.BulkDelete;
using EntityFrameworkCore.MySql.SimpleBulks.BulkInsert;
using EntityFrameworkCore.MySql.SimpleBulks.BulkMerge;
using EntityFrameworkCore.MySql.SimpleBulks.BulkUpdate;

await dbct.BulkUpdateAsync(rows,
    [ "Column3", "Column2" ]);
await dbct.BulkUpdateAsync(compositeKeyRows,
    [ "Column3", "Column2" ]);

await dbct.BulkMergeAsync(rows,
    ["Id"],
    [ "Column1", "Column2" ],
    [ "Column1", "Column2", "Column3" ]);
await dbct.BulkMergeAsync(compositeKeyRows,
    [ "Id1", "Id2" ],
    [ "Column1", "Column2", "Column3" ],
    [ "Id1", "Id2", "Column1", "Column2", "Column3" ]);

Using Builder Approach in case you need both Dynamic & Lambda Expression

await dbct.CreateBulkInsertBuilder<Row>()
	.WithColumns(row => new { row.Column1, row.Column2, row.Column3 })
	// or .WithColumns([ "Column1", "Column2", "Column3" ])
	.ToTable(dbContext.GetTableInfor<Row>())
	.ExecuteAsync(rows);

ConnectionContextExtensions

Using Lambda Expression

using EntityFrameworkCore.MySql.SimpleBulks.BulkDelete;
using EntityFrameworkCore.MySql.SimpleBulks.BulkInsert;
using EntityFrameworkCore.MySql.SimpleBulks.BulkMerge;
using EntityFrameworkCore.MySql.SimpleBulks.BulkUpdate;

// Configure Mapping globaly

TableMapper.Configure<Row>(config =>
{
    config
    .TableName("Rows")
    .PrimaryKeys(x => x.Id);
});

TableMapper.Configure<CompositeKeyRow>(config =>
{
    config
    .TableName("CompositeKeyRows")
    .PrimaryKeys(x => new { x.Id1, x.Id2 });
});

var connection = new ConnectionContext(new MySqlConnection(connectionString), null);

// Insert all columns
await connection.BulkInsertAsync(rows);
await connection.BulkInsertAsync(compositeKeyRows);

// Insert selected columns only
await connection.BulkInsertAsync(rows,
    row => new { row.Column1, row.Column2, row.Column3 });
await connection.BulkInsertAsync(compositeKeyRows,
    row => new { row.Id1, row.Id2, row.Column1, row.Column2, row.Column3 });

await connection.BulkUpdateAsync(rows,
    row => new { row.Column3, row.Column2 });
await connection.BulkUpdateAsync(compositeKeyRows,
    row => new { row.Column3, row.Column2 });

await connection.BulkMergeAsync(rows,
    row => row.Id,
    row => new { row.Column1, row.Column2 },
    row => new { row.Column1, row.Column2, row.Column3 });
await connection.BulkMergeAsync(compositeKeyRows,
    row => new { row.Id1, row.Id2 },
    row => new { row.Column1, row.Column2, row.Column3 },
    row => new { row.Id1, row.Id2, row.Column1, row.Column2, row.Column3 });
                        
await connection.BulkDeleteAsync(rows);
await connection.BulkDeleteAsync(compositeKeyRows);

Using Dynamic String

using EntityFrameworkCore.MySql.SimpleBulks.BulkDelete;
using EntityFrameworkCore.MySql.SimpleBulks.BulkInsert;
using EntityFrameworkCore.MySql.SimpleBulks.BulkMerge;
using EntityFrameworkCore.MySql.SimpleBulks.BulkUpdate;

var connection = new ConnectionContext(new MySqlConnection(connectionString), null);

await connection.BulkInsertAsync(rows,
    [ "Column1", "Column2", "Column3" ]);
await connection.BulkInsertAsync(compositeKeyRows,
    [ "Id1", "Id2", "Column1", "Column2", "Column3" ]);

await connection.BulkUpdateAsync(rows,
    [ "Column3", "Column2" ]);
await connection.BulkUpdateAsync(compositeKeyRows,
    [ "Column3", "Column2" ]);

await connection.BulkMergeAsync(rows,
    ["Id"],
    [ "Column1", "Column2" ],
    [ "Column1", "Column2", "Column3" ]);
await connection.BulkMergeAsync(compositeKeyRows,
    [ "Id1", "Id2" ],
    [ "Column1", "Column2", "Column3" ],
    [ "Id1", "Id2", "Column1", "Column2", "Column3" ]);

Using Builder Approach in case you need both Dynamic & Lambda Expression

await connection.CreateBulkInsertBuilder<Row>()
	.WithColumns(row => new { row.Column1, row.Column2, row.Column3 })
	// or .WithColumns([ "Column1", "Column2", "Column3" ])
	.ToTable(new MySqlTableInfor<Row>("Rows"))
	.ExecuteAsync(rows);

Execution Options

BulkInsert

await _context.BulkInsertAsync(rows,
    row => new { row.Column1, row.Column2, row.Column3 },
    new BulkInsertOptions
    {
        KeepIdentity = false,
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

BulkUpdate

await _context.BulkUpdateAsync(rows,
    row => new { row.Column3, row.Column2 },
    new BulkUpdateOptions
    {
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

BulkDelete

await _context.BulkDeleteAsync(rows,
    new BulkDeleteOptions
    {
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

BulkMerge

await _context.BulkMergeAsync(rows,
    row => row.Id,
    row => new { row.Column1, row.Column2 },
    row => new { row.Column1, row.Column2, row.Column3 },
    new BulkMergeOptions
    {
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

BulkMatch

var contactsFromDb = await _context.BulkMatchAsync(matchedContacts,
    x => new { x.CustomerId, x.CountryIsoCode },
    new BulkMatchOptions
    {
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

TempTable

var customerTableName = await _context.CreateTempTableAsync(customers,
    x => new
    {
        x.IdNumber,
        x.FirstName,
        x.LastName,
        x.CurrentCountryIsoCode
    },
    new TempTableOptions
    {
        BatchSize = 0,
        Timeout = 30,
        LogTo = Console.WriteLine
    });

DirectInsert

await _context.DirectInsertAsync(row,
    row => new { row.Column1, row.Column2, row.Column3 },
    new BulkInsertOptions
    {
        Timeout = 30,
        LogTo = Console.WriteLine
    });

DirectUpdate

await _context.DirectUpdateAsync(row,
    row => new { row.Column3, row.Column2 },
    new BulkUpdateOptions
    {
        Timeout = 30,
        LogTo = Console.WriteLine
    });

DirectDelete

await _context.DirectDeleteAsync(row,
    new BulkDeleteOptions
    {
        Timeout = 30,
        LogTo = Console.WriteLine
    });

Upsert

await _context.UpsertAsync(row,
    row => row.Id,
    row => new { row.Column1, row.Column2 },
    row => new { row.Column1, row.Column2, row.Column3 },
    new BulkMergeOptions
    {
        Timeout = 30,
        LogTo = Console.WriteLine
    });

Returned Result

BulkUpdate

var updateResult = await dbct.BulkUpdateAsync(rows, row => new { row.Column3, row.Column2 });

Console.WriteLine($"Updated: {updateResult.AffectedRows} row(s)");

BulkDelete

var deleteResult = await dbct.BulkDeleteAsync(rows);

Console.WriteLine($"Deleted: {deleteResult.AffectedRows} row(s)");

BulkMerge

var mergeResult = await dbct.BulkMergeAsync(rows,
    row => row.Id,
    row => new { row.Column1, row.Column2 },
    row => new { row.Column1, row.Column2, row.Column3 });

Console.WriteLine($"Updated: {mergeResult.UpdatedRows} row(s)");
Console.WriteLine($"Inserted: {mergeResult.InsertedRows} row(s)");
Console.WriteLine($"Affected: {mergeResult.AffectedRows} row(s)");

Benchmarks

BulkInsert

Single Table /src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkInsertSingleTableBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-RGIUAC : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreInsert10036.86 msNA---976.73 KB
BulkInsert10018.73 msNA---56.31 KB
EFCoreInsert1000146.98 msNA1000.0000--9740.39 KB
BulkInsert1000112.55 msNA---312.73 KB
EFCoreInsert100001,247.58 msNA15000.00005000.0000-96372.25 KB
BulkInsert10000531.13 msNA---2902.21 KB
EFCoreInsert1000005,455.73 msNA147000.000037000.0000-956706.58 KB
BulkInsert1000001,267.28 msNA3000.00001000.0000-28606.81 KB
EFCoreInsert25000013,465.43 msNA368000.000088000.0000-2368616.45 KB
BulkInsert2500002,606.24 msNA9000.00005000.00001000.000071551.59 KB
EFCoreInsert50000027,001.92 msNA736000.0000174000.0000-4744491.9 KB
BulkInsert5000004,806.86 msNA17000.00007000.0000-142890.45 KB

Multiple Tables (1x parent rows + 5x child rows) /src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkInsertMultipleTablesBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-XRWCCS : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreInsert100189.6 msNA1000.0000--6875.61 KB
BulkInsert100166.7 msNA---271.06 KB
EFCoreInsert10001,097.2 msNA10000.00004000.0000-67968.5 KB
BulkInsert1000721.5 msNA---1987.01 KB
EFCoreInsert100004,663.4 msNA105000.000029000.0000-675868.05 KB
BulkInsert100001,789.9 msNA3000.00001000.00001000.000019330.64 KB
EFCoreInsert10000043,841.6 msNA1050000.0000250000.0000-6740771.2 KB
BulkInsert10000019,456.4 msNA25000.000012000.00001000.0000193110.47 KB

BulkUpdate

/src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkUpdateBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-LPQRVU : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreUpdate10077.32 msNA---861.01 KB
BulkUpdate10034.38 msNA---53.57 KB
EFCoreUpdate1000590.48 msNA1000.0000--8242.91 KB
BulkUpdate100096.88 msNA---312.71 KB
EFCoreUpdate100004,474.04 msNA12000.00003000.0000-81612.58 KB
BulkUpdate100001,121.61 msNA---2899.23 KB
EFCoreUpdate10000047,509.80 msNA122000.000029000.0000-808508.63 KB
BulkUpdate10000012,767.85 msNA4000.00002000.0000-28613 KB
EFCoreUpdate250000110,395.96 msNA307000.000071000.00001000.00002001921.86 KB
BulkUpdate25000022,615.14 msNA9000.00004000.0000-71565.2 KB

BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-LPQRVU : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Allocated
BulkUpdate50000044.36 sNA18000.00008000.0000139.6 MB
BulkUpdate100000081.88 sNA37000.000018000.0000282.08 MB

BulkDelete

/src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkDeleteBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-CDMQUJ : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Allocated
EFCoreDelete10036.94 msNA--682.91 KB
BulkDelete10024.97 msNA--37.79 KB
EFCoreDelete1000231.29 msNA1000.00001000.00006762.27 KB
BulkDelete100032.78 msNA--202.8 KB
EFCoreDelete100002,209.83 msNA10000.00003000.000066219.48 KB
BulkDelete10000193.91 msNA--1835.73 KB
EFCoreDelete200004,705.65 msNA20000.00008000.0000132780.13 KB
BulkDelete20000376.96 msNA--3648.2 KB
EFCoreDelete5000011,842.03 msNA49000.000014000.0000327102.23 KB
BulkDelete500001,005.48 msNA1000.0000-9029.6 KB

BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-UIDALO : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Allocated
BulkDelete1000001.963 sNA2000.00001000.000017.61 MB
BulkDelete2500006.787 sNA5000.00002000.000044.06 MB
BulkDelete50000043.473 sNA10000.00005000.000087.97 MB
BulkDelete100000075.212 sNA21000.000010000.0000176.77 MB

BulkMerge

/src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkMergeBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-UIDALO : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreUpsert10074.94 msNA---1824.88 KB
BulkMerge10038.65 msNA---103.85 KB
EFCoreUpsert1000393.71 msNA2000.00001000.0000-17861.01 KB
BulkMerge1000178.14 msNA---677.6 KB
EFCoreUpsert100003,193.35 msNA27000.00008000.0000-178255.24 KB
BulkMerge10000549.66 msNA---6450.78 KB
EFCoreUpsert10000034,100.63 msNA269000.000063000.0000-1767492.45 KB
BulkMerge1000005,938.77 msNA9000.00005000.00001000.000063979.73 KB
EFCoreUpsert25000090,654.47 msNA674000.0000153000.0000-4375295.44 KB
BulkMerge25000031,726.66 msNA21000.000011000.00001000.0000162691.7 KB

BulkMatch

Single Column /src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkMatchSingleColumnBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-XRORYQ : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreSelect10087.293 msNA---755.39 KB
EFCoreBatchSelect1005.472 msNA---112.87 KB
BulkMatch1006.441 msNA---94.54 KB
EFCoreSelect1000943.840 msNA1000.0000--7486.88 KB
EFCoreBatchSelect100014.235 msNA---899.45 KB
BulkMatch100015.678 msNA---730.93 KB
EFCoreSelect100008,673.825 msNA12000.00001000.0000-74547.2 KB
EFCoreBatchSelect10000145.653 msNA1000.0000--9060.32 KB
BulkMatch10000138.112 msNA1000.0000--7315.17 KB
EFCoreSelect10000077,525.831 msNA122000.000025000.00001000.0000745727.41 KB
EFCoreBatchSelect100000713.308 msNA13000.00005000.00001000.000090699.73 KB
BulkMatch100000739.911 msNA12000.00005000.00001000.000073822.48 KB

BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-XRORYQ : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
EFCoreBatchSelect2500002.086 sNA32000.000012000.00001000.0000220.07 MB
BulkMatch2500001.785 sNA28000.000011000.00001000.0000179.51 MB
EFCoreBatchSelect5000004.617 sNA63000.000023000.00001000.0000440.05 MB
BulkMatch5000003.884 sNA55000.000022000.00001000.0000359.01 MB
EFCoreBatchSelect10000008.081 sNA125000.000049000.00001000.0000880.01 MB
BulkMatch10000008.634 sNA108000.000042000.00001000.0000718.02 MB

Multiple Columns /src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/BulkMatchMultipleColumnsBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-XRORYQ : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Allocated
EFCoreSelect100167.60 msNA--1002.69 KB
BulkMatch10011.01 msNA--152.36 KB
EFCoreSelect10001,239.99 msNA1000.0000-9452.78 KB
BulkMatch100035.72 msNA--1188.09 KB
EFCoreSelect1000011,437.62 msNA15000.00003000.000097825.21 KB
BulkMatch10000289.64 msNA1000.0000-11953.45 KB
EFCoreSelect10000090,754.18 msNA154000.000038000.0000948693.23 KB
BulkMatch1000001,981.62 msNA18000.00006000.0000120447.04 KB

BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-XRORYQ : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
BulkMatch2500006.536 sNA46000.000016000.0000-296.15 MB
BulkMatch50000011.922 sNA92000.000032000.0000-594.47 MB
BulkMatch100000040.775 sNA185000.000066000.00001000.00001194.94 MB

TempTable

/src/EntityFrameworkCore.MySql.SimpleBulks.Benchmarks/TempTableBenchmarks.cs


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK=8.0.400
  [Host]     : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
  Job-GTTKRK : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2

InvocationCount=1  IterationCount=1  UnrollFactor=1  
WarmupCount=0  

MethodRowsCountMeanErrorGen0Gen1Gen2Allocated
CreateTempTable1005.322 msNA---56.78 KB
CreateTempTable100014.892 msNA---285.05 KB
CreateTempTable1000090.559 msNA---2593.26 KB
CreateTempTable100000566.383 msNA3000.00001000.0000-25485.38 KB
CreateTempTable2500001,039.989 msNA8000.00004000.00001000.000063742.06 KB
CreateTempTable5000002,069.624 msNA15000.00007000.00001000.0000127270.92 KB
CreateTempTable10000004,251.546 msNA29000.000014000.00001000.0000254340.69 KB

License

EntityFrameworkCore.MySql.SimpleBulks is licensed under the MIT license.