Flowthru.Extensions.EFCore.Bulk
0.27.0
See the version list below for details.
dotnet add package Flowthru.Extensions.EFCore.Bulk --version 0.27.0
NuGet\Install-Package Flowthru.Extensions.EFCore.Bulk -Version 0.27.0
<PackageReference Include="Flowthru.Extensions.EFCore.Bulk" Version="0.27.0" />
<PackageVersion Include="Flowthru.Extensions.EFCore.Bulk" Version="0.27.0" />
<PackageReference Include="Flowthru.Extensions.EFCore.Bulk" />
paket add Flowthru.Extensions.EFCore.Bulk --version 0.27.0
#r "nuget: Flowthru.Extensions.EFCore.Bulk, 0.27.0"
#:package Flowthru.Extensions.EFCore.Bulk@0.27.0
#addin nuget:?package=Flowthru.Extensions.EFCore.Bulk&version=0.27.0
#tool nuget:?package=Flowthru.Extensions.EFCore.Bulk&version=0.27.0
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.27.0)
- 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.27.1 | 37 | 7/2/2026 |
| 0.27.1-preview.120 | 31 | 7/2/2026 |
| 0.27.0 | 67 | 7/1/2026 |
| 0.27.0-preview.119 | 37 | 7/1/2026 |
| 0.26.0-preview.112 | 59 | 6/5/2026 |
| 0.25.0 | 125 | 6/2/2026 |
| 0.25.0-preview.110 | 55 | 6/2/2026 |
| 0.24.0-preview.108 | 53 | 6/2/2026 |
| 0.21.0 | 106 | 5/24/2026 |
| 0.21.0-preview.101 | 66 | 5/24/2026 |
| 0.20.0 | 98 | 5/23/2026 |
| 0.20.0-preview.100 | 56 | 5/23/2026 |
| 0.19.0-preview.99 | 57 | 5/23/2026 |
| 0.18.5-preview.98 | 59 | 5/22/2026 |
| 0.18.4-preview.97 | 54 | 5/22/2026 |
| 0.18.3 | 98 | 5/20/2026 |
| 0.18.3-preview.95 | 59 | 5/19/2026 |
| 0.18.2 | 101 | 5/18/2026 |
| 0.18.2-preview.93 | 60 | 5/18/2026 |