修改表数据后,均需要通过执行 dbContext.SaveChanges() 函数来保存修改
增
单个增加:Add(),参数为实体实例
批量增加:AddRange() ,参数为可枚举类型或数组
dbContext.Books.Add(new Book { Title = "Add", AuthorName = "Add" });
Book[] bookArr =
{
new Book{ Title="AddRange_1",AuthorName = "AddRange_1"},
new Book{ Title="AddRange_2",AuthorName = "AddRange_2"},
new Book{ Title="AddRange_3",AuthorName = "AddRange_3"}
};
dbContext.Books.AddRange(bookArr);
删
单个删除:Remove(),参数为实体实例
批量删除:AddRange(),参数为可枚举类型或数组
EFCore7.0+时,删除(单个或批量)可通过ExecuteDelete()实现
// Remove()
dbContext.Remove(dbContext.Books.Where(e => e.AuthorName == "Add").SingleOrDefault());
// RemoveRange()
dbContext.RemoveRange(dbContext.Books.Where(e => e.AuthorName.Contains("AddRange")).ToList());
// ExecuteDelete() EFCore7.0+
dbContext.Books.Where(e => e.AuthorName.Contains("AddRange")).ExecuteDelete();
改
先查询再修改
// 先查询, 再修改
Book? book = dbContext.Books.Where(e => e.AuthorName == "Add").SingleOrDefault();
if (book != null)
{
book.Price += 10;
}
EFCore7.0+时,修改(单个或批量)可通过ExecuteUpdate()实现
注:第一个参数为被修改的表字段,第二个参数为修改值
// ExecuteUpdate() EFCore7.0 +
dbContext.Books.Where(e => e.AuthorName == "Add").ExecuteUpdate(setter => setter.SetProperty(e => e.Price, e => e.Price + 10));
查
可通过IQueryable<T>的扩展函数ToQueryString()来获取查询语句的SQL代码
IQueryable<Book> books = dbContext.Books.Where(e => e.Price > 0);
if (books.Count()!=0)
{
foreach (var item in books)
{
Console.WriteLine(item.Title);
}
}
string sqlString = books.ToQueryString(); // 获取查询语句的SQL代码