博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【EF】EF扩展库(批量操作)
阅读量:4579 次
发布时间:2019-06-08

本文共 1619 字,大约阅读时间需要 5 分钟。

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扩展库,支持批量操作,不用先查询出来,然后逐个删除

  

在VS可以直接通过NuGet安装(因为我EF是5.0的,所以加上版本号,现在出到6了)

  PM> Install-Package EntityFramework.Extended -Version 5.0.0.73

 

安装完成后

1        //删除 2        context.Table1.Delete(u => u.Id > 5); 3        context.SaveChange(); 4  5        //更新 6        public static void UpdateBalance(ChannelAccount channelAccount) 7         { 8             using (FinanceContext context = new FinanceContext()) 9             {10                 context.ChannelAccounts11                     .Where(t => t.ChannelAccountID == channelAccount.ChannelAccountID)12                     .Update(t => new ChannelAccount {Balance = channelAccount.Balance});13                 context.SaveChanges();14             }15         }

 

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

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

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秒内重复查询,则会从缓存中读取,不会查询数据库

 

转载于:https://www.cnblogs.com/yanglang/p/7444544.html

你可能感兴趣的文章
winform 获取当前名称
查看>>
报表分栏后的排序
查看>>
Django中models定义的choices字典使用get_FooName_display()在页面中显示值
查看>>
nohup命令详解(转)
查看>>
别人的Linux私房菜(1)计算机概论
查看>>
系统编程之文件操作
查看>>
ModelState.IsValid
查看>>
菜鸟之路——机器学习之线性回归个人理解及Python实现
查看>>
opengl glut vs2013配置
查看>>
dialogPostRun 覆盖方法class Dialog 动态创建
查看>>
20170320_系统管理_部门管理2
查看>>
csust1086蘑菇真的贵,友情价更高
查看>>
有关指针和数组的理解
查看>>
Module模式
查看>>
《javascript高级程序设计》读书笔记(一)javascript简单介绍
查看>>
NOI2010 超级钢琴
查看>>
第一次冲刺最后一次报告
查看>>
netfilter/iptables全攻略
查看>>
laravel5.5 认证JWT使用
查看>>
wpf Smith.WPF.HtmlEditor 使用方法
查看>>