【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
安装完成后
//删除
context.Table1.Delete(u => u.Id > );
context.SaveChange(); //更新
public static void UpdateBalance(ChannelAccount channelAccount)
{
using (FinanceContext context = new FinanceContext())
{
context.ChannelAccounts
.Where(t => t.ChannelAccountID == channelAccount.ChannelAccountID)
.Update(t => new ChannelAccount {Balance = channelAccount.Balance});
context.SaveChanges();
}
}
扩展库还支持批量查询功能
例如:在分页查询的时候,需要查询结果数,和结果集
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扩展库(批量操作)的更多相关文章
- EF扩展库(批量操作)
EF删除和修改数据只能先从数据库取出,然后再进行删除 delete from Table1 where Id>5; update Table1 set Age=10; 我们需要这样操作 //删除 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- EntityFramework.Extended 对EF进行扩展
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- 采用EntityFramework.Extended 对EF进行扩展
今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展的类库 ...
- EF中的那些批量操作
在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些 ...
- 谓词筛选表达式的扩展库PredicateLib
PredicateLib PredicateLib是谓词筛选表达式Expression<Func<T, bool>>的一个扩展库,它可以帮你创建一个复杂且灵活的Expressi ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- Z.ExtensionMethods 一个强大的开源扩展库
今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档 ...
- PHP使用mysqli扩展库实现增删改查(面向对象版)
mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...
随机推荐
- 树形DP(例题)
没有上司的舞会 题目 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职 ...
- Hibernate学习笔记一
1 框架体系结构 2 hibernate入门 2.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational: ...
- css dropdown menu
<ul> <li class="left">abc</li> <li class="middle" id=" ...
- CodeForces 547D Mike and Fish 思维
题意: 二维平面上给出\(n\)个点,然后对每个点进行染色:红色和蓝色,要求位于同一行或同一列的点中,红色点和蓝色点的个数相差不超过1 分析: 正解是求欧拉路径,在这篇博客中看到一个巧妙的思路: 对于 ...
- 我错了的N个学习
其实在面对自己的失误的时候,勇敢的说我错了,就是我错了,不找借口,不找理由,然后就开始分析错误的原因,分析,总结,学习,提高,成为自己成长的垫脚石,这个才是正确的做法,做人要拿出精神头,拼死至休的劲头 ...
- nodeJs 安装 npm nodeModules package.json
Nodejs 1.安装nodejs 从nodejs官网下载最新版本的node,设置环境变量这样就可以在cmd下直接用命令行操作npm 环境变量:path d:/nodejs 查看本机node及n ...
- Ceph性能优化
几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感) 一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上 ...
- 【WXS数据类型】Object
Object 是一种无序的键值对. 属性: 名称 值类型 说明 [Object].constructor [String] 返回值为“Object”,表示类型的结构字符串 方法: 原型:[Object ...
- 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络
上一篇笔记主要介绍了卷积神经网络相关的基础知识.在本篇笔记中,将参考TensorFlow官方文档使用mnist数据集,在TensorFlow上训练一个多层卷积神经网络. 下载并导入mnist数据集 首 ...
- 将System.Drawing.Bitmap转换为Direct2D.D2DBitmap
最近在尝试Direct2D编程,挺好玩的. 但是有时候还是会用到GDI+来生成图片,但D2D绘图需要用到自己的D2DBitmap类. 因此需要转换,查阅了下网上的资料,写了这么一个方法: using ...