(转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html
今天乍一看,园子里居然没有关于这个类库的文章,实在是意外毕竟已经有很多介绍EF使用的文章了。
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended
也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样有隔离癖好的就可以大胆使用了。下面介绍如何批量删除、更新、查询。
批量删除
本来我们需要这样删除
//EF原生的删除需要先取出entity然后removecontext.Remove(context.Users.First(u=>u.Key==xxx);//如果要删除更多foreach(var userincontext.Users.Where(u => u.FirstName =="firstname").ToList()){context.Remove(user);}本来一句sql可以解决的问题,变得复杂了。
使用ORM是为了跟sql尽量的解耦,并且能在编译时检查出更多的错误,但是上面的写法让人堵的慌,如果你也有这种感觉下面的写法是不是就是你脑子里想要的东西呢。
----引用EF Extend Libary后删除只需要一次就完成了,效率高了很多,也不需要太多的连接资源,使用更方便了
//delete all users where FirstName matchescontext.Users.Delete(u => u.FirstName =="firstname");//当然如果我这样写也可以context.Users.Where(...).Delete();当第一次看到EF EL的时候就被这种写法吸引住了,这不就是我们一直找的东西么。
批量更新
//批量更新用户名中包含大写J的用户设置工资为999context.Users.Update(u => u.Name.Contans("J"),u2 =>newUser {Salary = 999});//第一个参数也可以传入已经有的IQuaryable的参数如下var users = context.Users.Where(u => u.FirstName =="firstname");context.Users.Update(users, u =>newUser {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(); |
(转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)的更多相关文章
- Entity Framework Extended Library
扩展了实体框架的功能类库. https://github.com/loresoft/EntityFramework.Extended 1批量更新/删除 1)删除 //delete all users ...
- 【转】Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对I ...
- Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包 1.先更新VS的NuGet版本http: ...
- entity framework extended library , bulk execute,deleting and updating ,opensource
http://weblogs.asp.net/pwelter34/entity-framework-batch-update-and-future-queries
- Entity Framework Core(EF Core) 最简单的入门示例
目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- EF是啥?【What is Entity Framework?】(EF基础系列2)
EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...
- Entity Framework Code First ---EF Power Tool MySql
关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...
- Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题
关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...
随机推荐
- CPU Meltdown和Spectre漏洞分析
一.背景: 1月4日,国外爆出了整个一代处理器都存在的灾难性漏洞:Meltdown和Spectre. 几乎影响了全球20年内所有cpu处理器:这两个漏洞可以使攻击者通过利用并行运行进程的方式来破坏处理 ...
- HttpSession的关键属性和方法
1.当一个用户向服务器发送第一个请求时,服务器为其建立一个session,并为此session创建一个标识号:2.这个用户随后的所有请求都应包括这个标识号.服务器会校对这个标识号以判断请求属于哪个se ...
- Spring,Hibernate 集成解决多hbm.xml文件繁多的方案
开发一个大一点的项目有很多的hbm.xml文件,有时候上百个也不稀奇,如果用 <property name="mappingLocations"> <list&g ...
- win10下关于apache配置虚拟主机
apache安装完默认是不开启虚拟服务器的,如果希望在本地apache上面配置虚拟服务器,类似于在网上买的虚拟主机,可以按照以下步骤进行配置: 1,修改本机的hosts文件,如下 示例:127.0.0 ...
- http头解释
<---响应头---> 长连接: Connection: keep-alive 开启长连接 ---- connection 英 [kəˈnekʃn]连接 ...
- RN中关于组件中属性的传递
比如: 组件A想要给组件B中的组件C传递一个属性prop class A extends Component{ render(){ return( <B title = "这是一个标题 ...
- 基于mysql全文索引的深入理解
最近要使用mysql的全文索引,一直没能成功,一个是只有MyISAM引擎支持,创建表时需要指定,而是需要对my.ini进行配置. 前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24. ...
- ubuntu16.04安装virtualbox
download:download.virtualbox.org/virtualbox/5.0.10/virtualbox-5.0_5.0.10-104061~Ubuntu~trusty_amd64. ...
- Segments(叉积)
Segments http://poj.org/problem?id=3304 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- React Native 首次加载白屏优化
RN首次加载都会有个白屏过程,一般都会有500ms+的白屏时间,原生页面开发同样的页面会能够快速显示而在RN页面中有个明显的等待过程,这个会影响用户体验. 1.使用过渡页面 简单处理可以在白屏过程中加 ...