欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!
EFCore.BulkExtensions EFCore.BulkExtensions 是一个开源的适用于 .NET 的批处理扩展工具,这个库是轻量级且非常高效的,可以增强常用的 CRUD 操作,这个项目入选了微软推荐的前 20 名 EF Core 扩展。
EFCore.BulkExtensions 支持 SQLServer, PostgreSQL, MySQL, SQLite.
EFCore.BulkExtension 支持高性能的批量操作,包括 插入、更新、删除、读取、更新插入、保存等等。 如何使用?
首先使用 Nuget 安装 EFCore.BulkExtensions。
代码语言:javascript复制Install-Package EFCore.BulkExtensions
批量操作示例
代码语言:javascript复制context.BulkInsert(entities);
context.BulkInsertOrUpdate(entities);
context.BulkInsertOrUpdateOrDelete(entities);
context.BulkUpdate(entities);
context.BulkDelete(entities);
context.BulkRead(entities);
context.BulkSaveChanges();
异步版本
代码语言:javascript复制context.BulkInsertAsync(entities);
context.BulkInsertOrUpdateAsync(entities); //Upsert
context.BulkInsertOrUpdateOrDeleteAsync(entiti);//Sync
context.BulkUpdateAsync(entities);
context.BulkDeleteAsync(entities);
context.BulkReadAsync(entities);
context.BulkSaveChangesAsync();
搭配 EF Core 使用
代码语言:javascript复制// 删除
context.Items.Where(a => a.ItemId > 500).BatchDelete();
context.Items.Where(a => a.ItemId > 500).BatchDeleteAsync();
// 更新
context.Items.Where(a => a.ItemId <= 500).BatchUpdate(a => new Item { Quantity = a.Quantity 100});
context.Items.Where(a => a.ItemId <= 500).BatchUpdateAsync(a => new Item {Quantity=a.Quantity 100});
// can be as value ' 100' or as variable ' incrementStep' (int incrementStep = 100;)
// 更新
context.Items.Where(a => a.ItemId <= 500).BatchUpdate(new Item { Description = "Updated" });
context.Items.Where(a => a.ItemId <= 500).BatchUpdateAsync(new Item { Description = "Updated" });
// Truncate
context.Truncate<Entity>();
context.TruncateAsync<Entity>();
项目地址
github.com/borisdj/EFCore.BulkExtensions