EF学习

关于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();
            }
        }

提高性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值