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

  delete from Table1 where Id>5;

  update Table1 set Age=10;

我们需要这样操作

//删除
var t1 = context.Table1.Where(t => t.Id > ).ToList();
foreach(var t in t1)
{
context.Table1.Remove(t);
}
context.SaveChange(); //更新
var t1 = context.Table1.ToList();
foreach(var t in t1)
{
t.Age = ;
}
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(); //更新
context.Table1.Update(u => u.Id > , u => new Table1 { Age = });
context.SaveChange();

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

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

EF做法:

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

EF扩展库的做法

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

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

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

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

EF扩展库(批量操作)的更多相关文章

  1. 【EF】EF扩展库(批量操作)

    EF删除和修改数据只能先从数据库取出,然后再进行删除 delete from Table1 where Id>5; update Table1 set Age=10; 我们需要这样操作 //删除 ...

  2. Entity Framework扩展库

    这个Entity Framework扩展完全支持EF 5.0/6.0,项目地址 https://github.com/loresoft/EntityFramework.Extended,这个库支持批量 ...

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

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

  4. EF 跨库查询

    原因:最近公司项目,遇到一个ef跨库查询的问题.(只是跨库,并不是跨服务器哈) 主要我们的一些数据,譬如地址,城市需要查询公共资料库. 但是本身我的程序设计采用的是ef框架的.因此为这事花费了1天时间 ...

  5. (转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)

    转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html 今天乍一看,园子里居然没有关于这个类库的文章,实在是意外毕竟已经有很 ...

  6. ASP.NET MVC扩展库

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

  7. Z.ExtensionMethods 一个强大的开源扩展库

    今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档 ...

  8. PHP使用mysqli扩展库实现增删改查(面向对象版)

    mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...

  9. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

随机推荐

  1. 斐波那契数[XDU1049]

    Problem 1049 - 斐波那契数 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 1673  Ac ...

  2. TopCoder SRM 588 DIV2 KeyDungeonDiv2

    简单的题目 class KeyDungeonDiv2 { public: int countDoors(vector <int> doorR, vector <int> doo ...

  3. mysql中datetime与timestamp的比较

    相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS. 不同 范围 datetime 以'YYYY-M ...

  4. JAVA生成RSA非对称型加密的公钥和私钥(利用JAVA API)

    非对称型加密非常适合多个客户端和服务器之间的秘密通讯,客户端使用同一个公钥将明文加密,而这个公钥不能逆向的解密,密文发送到服务器后有服务器端用私钥解密,这样就做到了明文的加密传送. 非对称型加密也有它 ...

  5. shell 循环

    for循环: 批量删除.gz结尾的文件: 循环打包文件并备份到一个目录下面: find ./ -maxdepth 1 -name "*.gz" find ./ -maxdepth ...

  6. wordpress安装

    通过浏览器访问wordpress文件包 点击现在就开始,填写下面内容 我的填写 如出现下面情况,你得先创建一个数据库,再重试 数据库的创建 之后会出现 点击进行安装 安装成功 登录 主界面 写个文章, ...

  7. java 找出字符串之间的字符

    package lia.meetlucene; import java.io.IOException; import java.util.ArrayList; import java.util.Arr ...

  8. MATLAB的使用总结

    Log scale %# some random data x = .^(:); y = rand(size(x)); plot(log2(x), y) %# plot on log2 x-scale ...

  9. li标签行内元素高度及居中

    <head> <title><title> <style type="text/css"> * { padding: 0px; ma ...

  10. memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论

    附:请浅谈memcached的机制 答: ①基于C/S架构,协议比较简单 c/s架构,此时memcached为服务器端,我们可以使用如PHP,c++/c等程序连接memcached服务器. memca ...