E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended

也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样有隔离癖好的就可以大胆使用了。下面介绍如何批量删除、更新、查询。

批量删除

//EF原生的删除需要先取出entity然后remove
context.Remove(context.Users.First(u=>u.Key==xxx);
//如果要删除更多
foreach(var user in context.Users.Where(u => u.FirstName == "firstname").ToList())
{
context.Remove(user);
}

  本来一句sql可以解决的问题,变得复杂了。

使用ORM是为了跟sql尽量的解耦,并且能在编译时检查出更多的错误,但是上面的写法让人堵的慌,如果你也有这种感觉下面的写法是不是就是你脑子里想要的东西呢。

引用EF Extend Libary后删除只需要一次就完成了,效率高了很多,也不需要太多的连接资源,使用更方便了
//delete all users where FirstName matches
context.Users.Delete(u => u.FirstName == "firstname");
//当然如果我这样写也可以
context.Users.Where(...).Delete();

  

批量更新

//批量更新用户名中包含大写J的用户设置工资为999
context.Users.Update(
u => u.Name.Contans("J"),
u2 => new User {Salary = 999}); //第一个参数也可以传入已经有的IQuaryable的参数如下
var users = context.Users.Where(u => u.FirstName == "firstname");
context.Users.Update(users, u => new User {FirstName = "newfirstname"});<br><br>//当然了我最喜欢的还是这样的写法<br>context.Users.Where(u => u.FirstName == "firstname").Update(u=>new User{FirstName = "newfirstname"})

  

批量查询

//看看EF EL怎么解决
// 复用的查询
var q = db.Tasks.Where(t => t.Priority == 2);
// 获取总数
var q1 = q.FutureCount();
// 获取分页的数据
var q2 = q.Skip(pageIndex).Take(pageSize).Future(); // 这里会触发上面所有Future函数中的查询包装到一个连接中执行
int total = q1.Value;
//因为已经得到结果了,这里不会再次查询
var tasks = q2.ToList();

   其实现在的查询已经很棒了,默认的延迟查询都能满足基本需求,但是有时候总希望更极致一点,比如现有的查询无法满足分页这个顽固的需求。

转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html

【转】Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)的更多相关文章

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

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

  2. Entity Framework Extended Library

    扩展了实体框架的功能类库. https://github.com/loresoft/EntityFramework.Extended 1批量更新/删除 1)删除 //delete all users ...

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

    E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包 1.先更新VS的NuGet版本http: ...

  4. entity framework extended library , bulk execute,deleting and updating ,opensource

    http://weblogs.asp.net/pwelter34/entity-framework-batch-update-and-future-queries

  5. Entity Framework Core(EF Core) 最简单的入门示例

    目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...

  6. 【Basics of Entity Framework】【EF基础系列1】

    EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...

  7. EF是啥?【What is Entity Framework?】(EF基础系列2)

    EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...

  8. Entity Framework Code First ---EF Power Tool MySql

    关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...

  9. Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题

    关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...

随机推荐

  1. 那些年我们一起用过的 PHP 函数(一)

    用这个帖子记录一下 PHP 中比较常用的函数以及使用过程中需要注意的点,此贴持续更新 1.strpos() 函数     首先,我们知道 strpos() 函数是用于查找一个字符串在另一个字符串第一次 ...

  2. ngui处理不规则按钮点击

    吐个槽  棋牌类游戏做什么中国地图!!!  然后就要用到不规则按钮点击了 你懂的 213的unity虽然已经加入了polygoncollider 2d的支持 但是 但是 但是 是2d的 也就是说如果不 ...

  3. oracle listagg和wm_concat函数

    对于将一列多值合并成一行问题,oracle提供了wmsys.wm_concat和listagg函数处理此问题,下面我们以emp表中数据为例,看看两函数的使用方法 假设我们需要统计每种job下面有哪些员 ...

  4. python IOError: [Errno 22] invalid mode ('r') or filename:

    如果你是报这个错误,可能是因为你的文件路径中的中文字符太多的缘故. 你可以将路径或者文件名称改为英文试试.

  5. Codeforces 981 E - Addition on Segments

    E - Addition on Segments 思路: dp dp[i]表示构成i的区间的右端点 先将询问按r排序 然后,对于每次询问,每次枚举 i 从 n-x 到 1,如果dp[i] >= ...

  6. DirectX学习之第一个可运行的工程

    学习一门开发语言的第一件事情当然是搭建一个可运行的环境,然后运行一个可成功执行的案例. 本人在学习DirectX的第一个工程的时候,参考了雨凇MoMo的一篇文章(https://www.xuanyus ...

  7. java调用dll/so文件

    大家都知道用C++编写的程序如果用于windows使用则编译为xxx.dll文件,如果是Linux使用则编译为libxxx.so文件.下面将java调用dll/so文件的方法粘出来方便下次使用.此处使 ...

  8. <property name="hibernate.hbm2ddl.auto">update</property> 问题

    其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构.如果不是此方面的需求建议set value="none".create:每 ...

  9. 在不进入Guest OS的情况下,取得Guest OS的IP地址

    因为是个Headless 服务器,总是需要GUI VNC 到 Host OS, 然后进入里面的虚拟机,打 ipconfig / ifconfig  ,非常的不方便. 查了网上,找到上面的方法 1)确保 ...

  10. 雷林鹏分享:XML DOM

    XML DOM DOM(Document Object Model 文档对象模型)定义了访问和操作文档的标准方法. XML DOM XML DOM(XML Document Object Model) ...