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

简介:

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();
当第一次看到EF EL的时候就被这种写法吸引住了,这不就是我们一直找的东西么。

批量更新

//批量更新用户名中包含大写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();

 -------------------------------------------------------------------------------------------------------------------------------------------------

编辑于20160607

有段时间没用csharp了,上面写的是刚用efe时的笔记,一直没有回复大家很抱歉。

  1. efe不支持mysql;
  2. 不建议吞吐大的用ef,如果吞吐大的业务有限的话可以独立出来做;

本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html,如需转载请自行联系原作者
相关文章
|
3月前
|
SQL 开发框架 .NET
深入解析Entity Framework Core中的自定义SQL查询与Raw SQL技巧:从基础到高级应用的全面指南,附带示例代码与最佳实践建议
【8月更文挑战第31天】本文详细介绍了如何在 Entity Framework Core (EF Core) 中使用自定义 SQL 查询与 Raw SQL。首先,通过创建基于 EF Core 的项目并配置数据库上下文,定义领域模型。然后,使用 `FromSqlRaw` 和 `FromSqlInterpolated` 方法执行自定义 SQL 查询。此外,还展示了如何使用 Raw SQL 进行数据更新和删除操作。最后,通过结合 LINQ 和 Raw SQL 构建动态 SQL 语句,处理复杂查询场景。本文提供了具体代码示例,帮助读者理解和应用这些技术,提升数据访问层的效率和灵活性。
166 0
|
5月前
|
SQL 开发框架 .NET
【Entity Framework】你必须要了解EF中数据查询之数据加载
【Entity Framework】你必须要了解EF中数据查询之数据加载
29 0
|
5月前
|
SQL 开发框架 .NET
【Entity Framework】聊一聊EF如何使用数据库函数
【Entity Framework】聊一聊EF如何使用数据库函数
74 0
|
5月前
|
SQL 存储 开发框架
【Entity Framework】你必须了解的之自定义SQL查询
【Entity Framework】你必须了解的之自定义SQL查询
86 0
|
数据库连接 数据库 C++
entity framework core在独立类库下执行迁移操作
entity framework core在独立类库下执行迁移操作
108 0
|
存储 SQL 数据库
Entity Framework Core 捕获数据库变动
Entity Framework Core 捕获数据库变动
180 0
|
Web App开发 数据库 容器
EntityFramework中常用的数据删除方式速度对比
EntityFramework中常用的数据删除方式速度对比http://www.bieryun.com/3375.html 最近在学EF,目前了解到删除操作有三种方式, 第一,官方推荐的先查询数据,再根据查询的对象,删除对象。
1411 0