【EF】EF扩展库(批量操作)
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扩展库(批量操作)相关推荐
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展 ...
- 通过EF/Dapper扩展实现数据库审计功能
相信大家都有过周末被电话"吵醒"的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据"异常",然后你花费大量时间去排查这些错误数据,发现这是 ...
- EF中的那些批量操作
在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些 ...
- [转载]EF中的那些批量操作
阅读目录 插入 更新 删除 在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么 ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- 利用SOS扩展库进入高阶.NET6程序的调试
有时候我们可能想深入到程序的运行核心,去观察下内存分配情况以及堆栈内保存的东东,那么作为编程新贵的底层框架.NET6,又为我们提供了什么可用的观测工具呢? 1.SOS 扩展是什么? SOS扩展库是Wi ...
- 谓词筛选表达式的扩展库PredicateLib
PredicateLib是谓词筛选表达式Expression<Func<T, bool>>的一个扩展库,它可以帮你创建一个复杂且灵活的Expression<Func< ...
- TVM apps extension示例扩展库
TVM apps extension示例扩展库 此文件夹包含TVM的示例扩展库.演示了其它库如何在C++和Python API中扩展TVM. 该库扩展了TVM的功能. python模块加载新的共享库, ...
- wpf listview 添加控件_WPF开源控件扩展库 MaterialDesignExtensions
WPF开源控件扩展库 - MaterialDesignExtensions MaterialDesignExtensions仓库截图 logo Material Design Extensions 在 ...
最新文章
- 望城区构建摩托车电动车防盗系统 打造物联网平安智慧城市
- 数据库备份(存储过程)
- 开启文件高级共享功能
- 计算机删除等级列在哪里,插入与删除Excel表格的单元格、行和列
- 技术不牛如何才拿到国内IT巨头的Offer(转)
- 1000道Python题库系列分享24(41个客观题,numpy专题)
- Struts2学习笔记 - Action篇定义逻辑Action
- 集群启动/停止方式总结
- 《Python自动化》学习笔记:shutil模块使用介绍
- js排序的时间复杂度_javascript的array.indexOf的时间复杂度是多少?
- 使用Freetype发现的问题记录
- Q116:PBRT-V3场景描述文件.pbrt格式解析
- x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt
- [week13] 2 - T1
- css图片放大缩小动画
- uniapp 实现登录功能与获取用户凭证
- 阿里云·数加,阿里下一代数据集成实践
- 录像加文档,双管齐下!腾讯内部大热的Java知识宝典
- Post和Get,Post和Put请求的区别
- heritrix参考文献