• 【EF】EF扩展库(批量操作)


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

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

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

  • 相关阅读:
    48、Windows驱动程序模型笔记(六),同步
    44、Windows驱动程序模型笔记(二)
    JavaP:对象创建
    JavaP:继承和多态【只有提纲】
    ASP.NET MVC:一个简单MVC示例
    JavaP: 2、类和对象
    ASP.NET MVC:解析 MVC+ADO.NET Entity(实体类)
    Oracle: 一、Oracle简介,安装,基本使用,建表增删改查,数据类型及常用命令
    JavaP:面向对象编程
    ASP.NET: PagedDataSource
  • 原文地址:https://www.cnblogs.com/yanglang/p/7444544.html
Copyright © 2020-2023  润新知