Flowthru.Extensions.EFCore.Bulk
0.26.0-preview.112
dotnet add package Flowthru.Extensions.EFCore.Bulk --version 0.26.0-preview.112
NuGet\Install-Package Flowthru.Extensions.EFCore.Bulk -Version 0.26.0-preview.112
<PackageReference Include="Flowthru.Extensions.EFCore.Bulk" Version="0.26.0-preview.112" />
<PackageVersion Include="Flowthru.Extensions.EFCore.Bulk" Version="0.26.0-preview.112" />
<PackageReference Include="Flowthru.Extensions.EFCore.Bulk" />
paket add Flowthru.Extensions.EFCore.Bulk --version 0.26.0-preview.112
#r "nuget: Flowthru.Extensions.EFCore.Bulk, 0.26.0-preview.112"
#:package Flowthru.Extensions.EFCore.Bulk@0.26.0-preview.112
#addin nuget:?package=Flowthru.Extensions.EFCore.Bulk&version=0.26.0-preview.112&prerelease
#tool nuget:?package=Flowthru.Extensions.EFCore.Bulk&version=0.26.0-preview.112&prerelease
Flowthru.Extensions.EFCore.Bulk
Swap the default per-row save on an EF Core Catalog Item for a provider-native bulk path.
This complements Flowthru.Extensions.EFCore: base EFCore saves via SaveChanges (change
tracking, one round-trip per batch of tracked entities), which is fine for the modest writes
most flows produce. Reach for this package when a step writes high volume — tens of thousands
of rows or more — where the per-row tracking overhead dominates. BulkSave.Insert,
TruncateAndInsert, InsertOrUpdate, and InsertOrUpdateOrDelete each return a saveFunc you
hand to .WithSave(...), and the write becomes a single bulk-copy (e.g. Npgsql binary COPY).
Mental model
Same EF Core mental model as the base extension — your DbContext, your entity types, your
keys — but the save no longer goes through change tracking. It maps to the bulk-load command
your database provider exposes. Pick the strategy by the SQL semantics you want:
Insert (append), TruncateAndInsert (full replace), InsertOrUpdate (upsert by primary key),
InsertOrUpdateOrDelete (full sync — also deletes rows absent from the input). It is built on
EFCore.BulkExtensions, so its provider
support and caveats apply.
Install
dotnet add package Flowthru.Extensions.EFCore.Bulk
Hand a BulkSave strategy to the EF Core Item's .WithSave(...):
public IItem<IEnumerable<PreprocessedCompanySchema>> Companies =>
CreateItem(() => Item.Of<IEnumerable<PreprocessedCompanySchema>>("StagingCompanies")
.EFCoreQuery<PreprocessedCompanySchema, StagingDbContext>()
.WithContextFactory(_contextFactory)
.WithSave(BulkSave.Insert<PreprocessedCompanySchema, StagingDbContext>())
.Build());
Tune batch size, timeout, or identity behaviour with BulkSaveOptions:
.WithSave(BulkSave.TruncateAndInsert<MyEntity, MyDbContext>(
new BulkSaveOptions { BatchSize = 5000, SetOutputIdentity = true }))
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- EFCore.BulkExtensions (>= 10.0.1)
- Flowthru.Extensions.EFCore (>= 0.26.0-preview.112)
- Microsoft.EntityFrameworkCore (>= 10.0.4)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.4)
- Microsoft.Extensions.Configuration (>= 10.0.4)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.4)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.4)
- Microsoft.Extensions.DependencyInjection (>= 10.0.4)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.4)
- Microsoft.Extensions.Logging (>= 10.0.4)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.4)
- Microsoft.Extensions.Options (>= 10.0.4)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.26.0-preview.112 | 34 | 6/5/2026 |
| 0.25.0 | 102 | 6/2/2026 |
| 0.25.0-preview.110 | 40 | 6/2/2026 |
| 0.24.0-preview.108 | 37 | 6/2/2026 |
| 0.21.0 | 95 | 5/24/2026 |
| 0.21.0-preview.101 | 53 | 5/24/2026 |
| 0.20.0 | 90 | 5/23/2026 |
| 0.20.0-preview.100 | 48 | 5/23/2026 |
| 0.19.0-preview.99 | 51 | 5/23/2026 |
| 0.18.5-preview.98 | 53 | 5/22/2026 |
| 0.18.4-preview.97 | 48 | 5/22/2026 |
| 0.18.3 | 91 | 5/20/2026 |
| 0.18.3-preview.95 | 52 | 5/19/2026 |
| 0.18.2 | 93 | 5/18/2026 |
| 0.18.2-preview.93 | 54 | 5/18/2026 |
| 0.18.1 | 93 | 5/15/2026 |
| 0.18.1-preview.92 | 55 | 5/14/2026 |
| 0.18.0-preview.91 | 47 | 5/14/2026 |
| 0.17.5 | 87 | 5/13/2026 |