天津网站建设网页设计公司,网站icp备案网址,企业网站模板下载哪里好,国家建设执业注册中心网站因为之前的版本中#xff0c;EF Core无法实现高效地批量插入、修改、删除数据#xff0c;所以我开发了Zack.EFCore.Batch这个开源项目#xff0c;比较受大家的欢迎#xff0c;获得了400多个star。从.NET 7开始#xff0c;微软在Entity Framework Core 7内置了对高效地批量…因为之前的版本中EF Core无法实现高效地批量插入、修改、删除数据所以我开发了Zack.EFCore.Batch这个开源项目比较受大家的欢迎获得了400多个star。从.NET 7开始微软在Entity Framework Core 7内置了对高效地批量修改、删除数据的支持详细请见这个文档 https://learn.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-7.0/whatsnew?WT.mc_idDT-MVP-5004444#executeupdate-and-executedelete-bulk-updates因此我的这个开源项目在.NET 7中将不再提供对批量修改、删除数据的支持。但是由于Entity Framework Core中仍然没有提供高效地批量插入数据的功能因此我把这个开源项目升级到.NET 7从而继续为EF Core提供高效地批量插入数据的功能。为什么开发这个功能Entity Framework Core中可以通过AddRange()方法来批量插入数据但是AddRange()添加的数据仍然是被逐条执行Insert语句来插入到数据库中的执行效率比较低。我们知道我们可以通过SqlBulkCopy来快速地插入大量的数据到SQLServer数据库因为SqlBulkCopy是把多条数据打成一个数据包发送到SQLServer的所以插入效率非常高。MySQL、PostgreSQL等也有类似的支持。当然直接使用SqlBulkCopy来进行数据插入需要程序员把数据填充到DataTable而且需要进行列的映射等操作还需要处理ValueConverter等问题用起来比较麻烦。因此我对这些功能封装从而让EF Core的开发者能够更方便的以面向模型的方式来插入数据。这个库目前支持MS SQLServer、MySQL、PostgreSQL数据库。项目用法这个库的旧版也支持.NET 5、6等版本具体用法见https://github.com/yangzhongke/Zack.EFCore.Batch下面只讲.NET 7中的用法。首先安装Nuget包SQLServer用户: Install-Package Zack.EFCore.Batch.MSSQL_NET7MySQL用户: Install-Package Zack.EFCore.Batch.MySQL.Pomelo_NET7Postgresql用户: Install-Package Zack.EFCore.Batch.Npgsql_NET7然后就可以使用这个开源项目为DbContext提供的的扩展方法BulkInsert来进行数据的批量插入了代码如下ListBook books new ListBook();
for (int i 0; i 100; i)
{books.Add(new Book { AuthorName abc i, Price new Random().NextDouble(), PubTime DateTime.Now, Title Guid.NewGuid().ToString() });
}
using (TestDbContext ctx new TestDbContext())
{ctx.BulkInsert(books);
}开源项目地址https://github.com/yangzhongke/Zack.EFCore.Batch希望这个库能帮到大家。欢迎阅读我编写的《ASP.NET Core技术内幕与项目实战》这本书的宗旨就是“讲微软文档中没有的内容讲原理、讲实践、讲架构”。