EF批量操作数据之EntityFramework.Extended

来源:互联网 发布:adobe muse mac 破解 编辑:程序博客网 时间:2024/05/16 08:08

一 、EntityFramework.Extented整理

Git源代码地址:

https://github.com/loresoft/EntityFramework.Extended

二 、使用 实例

1.批量添加 数据 AddRange()发放,EF自带改方法

TestOne _context = new DBA.TestOne();DateTime start = DateTime.Now;for (int i = 0; i < 10000; i++){    _context.Numeber1.Add(new Numeber1()    {        Num1 = i    });    _context.SaveChanges();}Console.WriteLine(_context.Numeber1.Count());Console.WriteLine("总时长秒数:" + (DateTime.Now - start).TotalSeconds); //调试状态下 500多秒,非调试状态下 280秒//批量新增List<Numeber1> list = new List<Numeber1>();for (int i = 0; i < 10000; i++){    list.Add(new Numeber1()    {        Num1 = i    });}_context.Numeber1.AddRange(list);_context.SaveChanges();Console.WriteLine("总时长秒数:" + (DateTime.Now - start).TotalSeconds); //批量添加9秒钟

2.批量更新 

//data为修改的行数int   data =context.LogData.Where(a=>a.EntityKey=="aa").Update(b=> new LogData { EntityName = "ss" });//第二种写法,这种是针对DbSet的,已经标注过时了 var data = context.LogData.Update(a => a.EntityKey == "aa",b=> new LogData { EntityName = "ss" });
//批量更新TestOne _context = new DBA.TestOne();DateTime start = DateTime.Now;int count = _context.Numeber1.Where(q => q.ID > 10000).Update(q => new Numeber1(){    Num1 = q.Num1 * 1000});_context.SaveChanges();Console.WriteLine("总共更新数据:" + count);Console.WriteLine("总时长秒数:" + (DateTime.Now - start).TotalSeconds); //批量更新:1秒多时间
3.批量 删除

//记得引用using EntityFramework.Extensions;//这两种写法都可以,Context是你的EF上下文对象.context.LogData.Delete(a => a.EntityKey == "aa");context.LogData.Where(a => a.EntityKey == "aa").Delete();
//批量删除操作TestOne _context = new DBA.TestOne();DateTime start = DateTime.Now;int count = _context.Numeber1.Where(q => q.ID <= 30000).Delete();_context.SaveChanges();Console.WriteLine("总共删除数据:" + count);Console.WriteLine("总时长秒数:" + (DateTime.Now - start).TotalSeconds); //批量删除:1秒左右时间

4.批量查询  

   var count =context.LogData.FutureCount();                    var data = context.LogData.FutureFirstOrDefault();                     var datalist = context.LogData.Future();                    //在同一个代码上下文中,count,data,datalist这三个对象                    //任意一个,第一次tolist或者.Value的时候,会连接一次数据库                    //同时查询这三个数据,而不会分三次查询                    var datalists = datalist.ToList();                    int countdata = count.Value;  

5.查询缓存 

//使用默认的缓存时间var tasks = db.Tasks    .Where(t => t.CompleteDate == null)    .FromCache();//查询结果缓存300秒var tasks = db.Tasks    .Where(t => t.AssignedId == myUserId && t.CompleteDate == null)    .FromCache(CachePolicy.WithDurationExpiration(TimeSpan.FromSeconds(300)));



更多参考:

EF汇总函数使用注意事项Max()/Min()等

EF中查看上下文执行的Sql语句

EF GroupBy多个字段

http://www.cnblogs.com/GuZhenYin/p/5482288.html

0 0
原创粉丝点击