标签 标签 标签

  • 一句话的事儿:修改、删除数据

#修改

01.修改单笔数据

  1. #region 修改
  2. var league = context.Leagues.First();
  3. league.Name += "!!!";
  4. var count = context.SaveChanges();
  5. Console.WriteLine(count);
  6. #endregion

image.png

02.修改多笔数据

补充说明:
var leagues = context.Leagues.Skip(1).Take(3);
通常用于翻页处理,即忽略前1一笔数据,获取3笔数据

  1. //修改多笔数据
  2. var leagues = context.Leagues.Skip(1).Take(3);
  3. foreach (var league in leagues)
  4. {
  5. league.Name += "!!!";
  6. }
  7. var count = context.SaveChanges();
  8. Console.WriteLine(count);

image.png

03.我们可以发现,我们更改的数据都是被DbContext追踪的数据,可是现实是要修改的数据往往来自客户端,即一些json样式的数据

  1. var league = context.Leagues.AsNoTracking().First();
  2. league.Name += "++";
  3. context.Leagues.Update(league);

image.png
通过AsNoTracking(),可以设置该数据不被追踪,此外也可以设置全局数据不被追踪

  1. public DataContext()
  2. {
  3. ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
  4. }

04.不难看出,我们虽然只更改了Name属性,而EF是更改了所有数据

#删除

只能删除被DbContext追踪的数据

如何追踪数据呢? —>先查询,后删除

  1. //Delete
  2. //只能删除被追踪的数据
  3. //先查询,后删除
  4. var milan = context.Clubs.Single(x => x.Name == "AC Milan");
  5. //调用删除方法
  6. context.Clubs.Remove(milan);
  7. context.Remove(milan);
  8. context.RemoveRange(milan, milan);
  9. context.Clubs.RemoveRange(milan,milan);
  10. var count = context.SaveChanges();
  11. Console.WriteLine(count);

image.png


  • 本文作者:GeekPower - Felix Sun
  • 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!