关于EF 框架学习
最近在做.net core项目 用到的ef框架以及linq 提高性能问题
Add-Migration Init
Update-Database
using (var db = new AplDbContext())
{
var value = db.Departments.AsNoTracking().Where(it => it.Id != Guid.Empty).OrderBy(it => it.Code).ToList();
return Mapper.Map<List<DepartmentDto>>(value);
}
关于 AsNoTracking()扩展方法。
AsNoTracking()非跟踪数据
如果需要不缓存查询单个数据,就是 AsNoTracking 后 First / FirstOrDefault。
平常在做项目的时候,数据库的信息发生了变化,在MVC查询里查询的还是Old数据
var list = db.Users.First(x=>x.Name).ToList();
只做查询 ,不用做修改时可以用,提高EF查询性能
var list = db.Users.AsNoTracking().First(x=>x.Name).ToList();
以及linq优化代码方法
原始方法:
public void DeleteBatch(List<Guid> ids)
{
using (var db = new AplDbContext())
{
db.Departments.Where(it => ids.Contains(it.Id)).ToList().ForEach(it => db.Departments.Remove(it));
db.SaveChanges();
}
}
优化后的方法:
public void DeleteBatch(List<Guid> ids)
{
using (var db = new AplDbContext())
{
ids.ForEach(it => db.Departments.Remove(new Department { Id = it }));
db.SaveChanges();
}
}
提高性能