目录
为什么不用SQL实现
原生SQL语句需要把表名、列名等硬编码到SQL语句中,不符合模型驱动、分层隔离等思想,程序员直接面对数据库表,无法利用EF Core强类型的特性,如果模型发生改变,必须手动变更SQL语句。无法利用EF Core强大的SQL翻译机制来屏蔽不同底层数据库的差异。
EF Core5/6
使用这个开发包, Entity Framework Core 用户可以使用LINQ语句删除或者更新多条数据库记录,操作只执行一条SQL语句并且不需要首先把实体对象加载到内存中。 这个开发包支持 Entity Framework Core 5/6。
EF Core7/8及以上版本
使用这个开发包, Entity Framework Core 用户可以快速批量插入数据。 这个开发包支持 Entity Framework Core 7/8及以上版本。
批处理
以.NET9+SQLServer为例
NuGet安装:Install-Package Zack.EFCore.Batch.MSSQL_NET8
批量插入
static async Task Main(string[] args)
{
using (MyDbContext ctx = new MyDbContext())
{
List<Book> books = new List<Book>();
for (int i = 0; i < 10; i++)
{
books.Add(new Book { Name = "abc", Author = "小红", Price = new Random().NextDouble() });
}
ctx.BulkInsert(books);
}
}
批量删除
static async Task Main(string[] args)
{
using (MyDbContext ctx = new MyDbContext())
{
var a = await ctx.Books.Where(o => o.Author == "小红").ExecuteDeleteAsync();
}
}
批量修改
static async Task Main(string[] args)
{
using (MyDbContext ctx = new MyDbContext())
{
var a = await ctx.Books.Where(o => o.Author == "小红")
.ExecuteUpdateAsync(o => o.SetProperty(o => o.Name, "124")
.SetProperty(o => o.Author, "小花"));
}
}

3390

被折叠的 条评论
为什么被折叠?



