EF删除和修改数据只能先从数据库取出,然后再进行删除

  delete from Table1 where Id>5;

  update Table1 set Age=10;

我们需要这样操作

//删除
var t1 = context.Table1.Where(t => t.Id > 5).ToList();
foreach(var t in t1)
{context.Table1.Remove(t);
}
context.SaveChange();//更新
var t1 = context.Table1.ToList();
foreach(var t in t1)
{t.Age = 10;
}
context.SaveChange();

在github中提供了一个EF扩展库,支持批量操作,不用先查询出来,然后逐个删除

  https://github.com/loresoft/EntityFramework.Extended

在VS可以直接通过NuGet安装(因为我EF是5.0的,所以加上版本号,现在出到6了)

  PM> Install-Package EntityFramework.Extended -Version 5.0.0.73

安装完成后

 1        //删除
 2        context.Table1.Delete(u => u.Id > 5);
 3        context.SaveChange();
 4
 5        //更新
 6        public static void UpdateBalance(ChannelAccount channelAccount)
 7         {
 8             using (FinanceContext context = new FinanceContext())
 9             {
10                 context.ChannelAccounts
11                     .Where(t => t.ChannelAccountID == channelAccount.ChannelAccountID)
12                     .Update(t => new ChannelAccount {Balance = channelAccount.Balance});
13                 context.SaveChanges();
14             }
15         }

扩展库还支持批量查询功能

例如:在分页查询的时候,需要查询结果数,和结果集

EF做法:

var q = container.Users.Where(u => u.Name.StartsWith("a"));
//查询2次var count = q.Count();
var data = q.Skip(10).Take(10).ToList();

EF扩展库的做法

var q = context.Table1.Where(t => t.Name.StartsWith("a"));
var q1 = q.FutureCount();
var q2 = q.Skip(10).Take(10).Future();//一次查询
var data = q2.ToList();
var count = q1.Value;

扩展库还支持查询缓存功能

var users = container.Users.Where(u => u.Id > 5).FromCache(CachePolicy.WithDurationExpiration(TimeSpan.FromSeconds(10)));

如果在10秒内重复查询,则会从缓存中读取,不会查询数据库

【EF】EF扩展库(批量操作)相关推荐

  1. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展 ...

  2. 通过EF/Dapper扩展实现数据库审计功能

    相信大家都有过周末被电话"吵醒"的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据"异常",然后你花费大量时间去排查这些错误数据,发现这是 ...

  3. EF中的那些批量操作

    在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些 ...

  4. [转载]EF中的那些批量操作

    阅读目录 插入 更新 删除 在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么 ...

  5. ASP.NET MVC扩展库

    很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...

  6. 利用SOS扩展库进入高阶.NET6程序的调试

    有时候我们可能想深入到程序的运行核心,去观察下内存分配情况以及堆栈内保存的东东,那么作为编程新贵的底层框架.NET6,又为我们提供了什么可用的观测工具呢? 1.SOS 扩展是什么? SOS扩展库是Wi ...

  7. 谓词筛选表达式的扩展库PredicateLib

    PredicateLib是谓词筛选表达式Expression<Func<T, bool>>的一个扩展库,它可以帮你创建一个复杂且灵活的Expression<Func< ...

  8. TVM apps extension示例扩展库

    TVM apps extension示例扩展库 此文件夹包含TVM的示例扩展库.演示了其它库如何在C++和Python API中扩展TVM. 该库扩展了TVM的功能. python模块加载新的共享库, ...

  9. wpf listview 添加控件_WPF开源控件扩展库 MaterialDesignExtensions

    WPF开源控件扩展库 - MaterialDesignExtensions MaterialDesignExtensions仓库截图 logo Material Design Extensions 在 ...

最新文章

  1. 望城区构建摩托车电动车防盗系统 打造物联网平安智慧城市
  2. 数据库备份(存储过程)
  3. 开启文件高级共享功能
  4. 计算机删除等级列在哪里,插入与删除Excel表格的单元格、行和列
  5. 技术不牛如何才拿到国内IT巨头的Offer(转)
  6. 1000道Python题库系列分享24(41个客观题,numpy专题)
  7. Struts2学习笔记 - Action篇定义逻辑Action
  8. 集群启动/停止方式总结
  9. 《Python自动化》学习笔记:shutil模块使用介绍
  10. js排序的时间复杂度_javascript的array.indexOf的时间复杂度是多少?
  11. 使用Freetype发现的问题记录
  12. Q116:PBRT-V3场景描述文件.pbrt格式解析
  13. x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt
  14. [week13] 2 - T1
  15. css图片放大缩小动画
  16. uniapp 实现登录功能与获取用户凭证
  17. 阿里云·数加,阿里下一代数据集成实践
  18. 录像加文档,双管齐下!腾讯内部大热的Java知识宝典
  19. Post和Get,Post和Put请求的区别
  20. heritrix参考文献

热门文章

  1. postman指定User-Agent的header无效
  2. 科技公司高管职位知多少?(转)
  3. Centos环境下实现DNS的智能解析
  4. android + javascript 相互通信实例分析
  5. 关于bash的执行过程
  6. Leetcode 4.28 Tree Easy
  7. MySQL5.5编译安装
  8. 使用Visual Studio将Objective-C编译C++
  9. 我的第一篇Windows Live Writer小文
  10. Linux 批量加用户