EFCore.BulkExtensions
Entity Framework EF Core efcore Bulk Batch Extensions with BulkCopy in .Net for Insert Update Delete Read (CRUD), Truncate and SaveChanges operations on SQL Server, PostgreSQL, MySQL, SQLite, Oracle
Install / Use
/learn @borisdj/EFCore.BulkExtensionsREADME
EFCore.BulkExtensions
EntityFrameworkCore extensions that offer enterprise-grade performance boost - into overdrive:
-Bulk operations (super fast, en masse DB Protocol): Insert, Update, Delete, Read, Upsert, Sync, SaveChanges.
-Batch ops (chunk-oriented processing): Update, Delete - Deprecated from EF8 (v7+ has native Execute-Up/Del).
-AddOp (additional improvement): Truncate.
Library is Lightweight and very Efficient (warp speed), having all mostly used CRUD operation.
Was selected in top 10 EF Core Extensions recommended by Microsoft.
Latest version is using EF Core 10.
Supports all 5 major sql databases: SQLServer, PostgreSQL, MySQL, Oracle, SQLite.
Check out Testimonials from the Community and User Comments.
With thousands of pleased Users and many satisfied Clients from around the globe.
Customers range from small and medium-sized businesses to large corporations,
of which some are related to big-data/AI industry and fintech companies that have large datasets.
Icon>> and Logo (__):
<img src="/EFCore.BulkExtensions/EFCoreBulk.png" height=60> & <img src="EFCoreBulkLogo_small.png" height=60>
(f.forward | rocket time)
*Also take a look into others highly performant packages:
Open source (MIT or cFOSS) authored .Net libraries and other projects (@Infopedia.io personal blog post).
Opennes (community-driven and verifiable approach) enables security through transparency!
| № | Project | Type | Description |
| - | ------------------------ | ---- | -------------------------------------------------------- |
| 1 | EFCore.BulkExtensions | .Net_Lib(ngt) cF | EF Core Bulk CRUD Ops (Flagship Library) |
| 2 | EFCore.UtilExtensions | .Net_Lib(ngt) MIT | EF Core Custom Annotations and AuditInfo |
| 3 | EFCore.FluentApiToAnnotation | .Net_Lib(ngt) MIT | Converting FluentApi configuration to Annotations |
| 4 | ExcelIO.FastMapper | .Net_Lib(ngt) MIT | Excel I/O Mapper to-from Poco & .xlsx + attribute |
| 5 | FixedWidthParserWriter | .Net_Lib(ngt) MIT | Reading & Writing fixed-width/flat data files |
| 6 | CsCodeGenerator | .Net_Lib(ngt) MIT | C# code generation based on Classes and elements |
| 7 | CsCodeExample | C# Code ( - ) MIT | Examples of C# code in form of a simple tutorial |
License
BulkExtensions licensed under Dual License (cFOSS: conditionallyFree OSS - OpenSource Sustainability & funding).
If you do not meet criteria for free usage of software with community license then you have to buy commercial one.
When eligible for free usage but still need active support, consider purchasing Starter Lic.
Support
If you find this project useful you can mark it by leaving a Github Star :star:
And even with Community license, if you want help Development, you can make a Donation:
<img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee" height=28> _ or _
:zap: (Moneylution)
Contributing
Please read CONTRIBUTING for details on code of conduct, and the process for submitting Pull Requests.
When opening issues do write detailed explanation of the problem or feature with reproducible example.
Want to Contact for Development & Consulting: codis (Quality Delivery).
Description
Supported databases:
-SQLServer (or AzureSQL) under the hood uses SqlBulkCopy for Insert, Update/Delete = BulkInsert + raw Sql MERGE.
-PostgreSQL (9.5+) is using COPY BINARY combined with ON CONFLICT for Update.
-MySQL (8+) is using MySqlBulkCopy combined with ON DUPLICATE for Update.
-Oracle (8+) is using OracleBulkCopy combined with MERGE for Update.
-SQLite has no Copy tool, instead library uses plain SQL combined with UPSERT.
Bulk Tests can not have UseInMemoryDb because InMemoryProvider does not support Relational-specific methods.
Instead Test options are SqlServer(Developer or Express), LocalDb(if alongside Developer v.), or with other adapters.
Installation
Available on
Package manager console command to install: Install-Package EFCore.BulkExtensions
Main nuget is for all Databases, and specific ones with single provider for those who need small size packages.
Specific ones have adapter suffix: MainNuget + .SqlServer/PostgreSql/MySql/Oracle/Sqlite
(
)
Its assembly is Strong-Named and Signed with a key.
| Nuget | Target | Used EF v.| For projects targeting |
| ----- | --------------- | --------- | ------------------------------- |
| 10.x | Net 10.0 | EF Core 10| Net 10.0+ |
| 9.x | Net 9.0 | EF Core 9 | Net 9.0+ |
| 8.x | Net 8.0 | EF Core 8 | Net 8.0+ |
| 7.x | Net 6.0 | EF Core 7 | Net 7.0+ or 6.0+ |
| 6.x | Net 6.0 | EF Core 6 | Net 6.0+ |
| 5.x | NetStandard 2.1 | EF Core 5 | Net 5.0+ |
| 3.x | NetStandard 2.0 | EF Core 3 | NetCore(3.0+) or NetFrm(4.6.1+) info|
| 2.x | NetStandard 2.0 | EF Core 2 | NetCore(2.0+) or NetFrm(4.6.1+) |
| 1.x | NetStandard 1.4 | EF Core 1 | NetCore(1.0+) |
Supports follows official .Net lifecycle, currently v.10 as latest(LTS) and v.9.
At the moment ONLY SqlServer and Sqlite are published as 10.0.0.-rc.2 since other providers not yet updated to v10.
Usage
It's pretty simple and straightforward.
Bulk Extensions are made on DbContext and are used with entities List (supported both regular and Async methods):
context.BulkInsert(entities); context.BulkInsertAsync(entities);
context.BulkInsertOrUpdate(entities); context.BulkInsertOrUpdateAsync(entities); //Upsert
context.BulkInsertOrUpdateOrDelete(entities); context.BulkInsertOrUpdateOrDeleteAsync(entiti);//Sync
context.BulkUpdate(entities); context.BulkUpdateAsync(entities);
context.BulkDelete(entities); context.BulkDeleteAsync(entities);
context.BulkRead(entities); context.BulkReadAsync(entities);
context.BulkSaveChanges(); context.BulkSaveChangesAsync();
-MySQL when running its Test for the first time execute sql command (local-data): SET GLOBAL local_infile = true;
-SQLite requires package: SQLitePCLRaw.bundle_e_sqlite3 with call to SQLitePCL.Batteries.Init()
Batch Extensions are m
Related Skills
oracle
339.1kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
prose
339.1kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
Command Development
83.8kThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
Plugin Structure
83.8kThis skill should be used when the user asks to "create a plugin", "scaffold a plugin", "understand plugin structure", "organize plugin components", "set up plugin.json", "use ${CLAUDE_PLUGIN_ROOT}", "add commands/agents/skills/hooks", "configure auto-discovery", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices.
