一、概览
二、增
using (MyDdContext ctx = new MyDdContext())
{
Book book1 = new Book();
book1.Title = "《测试》";
ctx.Books.Add(book)
await ctx.SaveChangesAsync(); //更新数据库动作
}
实战:Excel数据导入到数据库
public async Task<IActionResult> UploadExcel(IFormFile excel)
{
var stream = new MemoryStream();
excel.CopyTo(stream);
IEnumerable<Book> L = stream.Query<Book>();
// 将EXCEL导入数据写入数据库
using (MyDdContext ctx = new MyDdContext())
{
foreach (var book in L)
{
ctx.Books.Add(book);
}
await ctx.SaveChangesAsync(); //更新数据库动作
}
//return Ok(num);
return View(price);
}
三、删
public class DeleteDataController : Controller
{
public async void Index()
{
using MyDdContext ctx = new();
var book = ctx.Books.Single(b => b.Title == "数学之美");
ctx.Remove(book);
await ctx.SaveChangesAsync();
}
}
四、改
public class UpdateDataController : Controller
{
public async void Index()
{
using MyDdContext ctx = new();
var book = ctx.Books.Single(b => b.Title == "数学之美");
book.Price = 100.0;
await ctx.SaveChangesAsync();
}
}
五、查
public class QueryDataController : Controller
{
public IActionResult QueryData()
{
IEnumerable<Book> books = new List<Book>();
using (MyDdContext ctx = new())
{
books = ctx.Books.Where(b => b.Price > 20);
}
return View(books);
}
}
六、总结
1、性能瓶颈:对于批量更新、删除的动作,EF CORE性能非常低。例如需要对价格大于10的书籍的价格进行涨价5元操作,SQL处理1次Update语句即可,但是EF CORE转成SQL语句是查询出所有价格大于10的书籍,然后对结果集进行遍历,每条结果都执行一次Update语句,在数据量大的时候性能会非常低