zoukankan      html  css  js  c++  java
  • Entity Framework 批量操作

    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();
    复制代码

    在VS可以直接通过NuGet安装

      PM> Install-Package EntityFramework.Extended 

    安装完成后

    复制代码
    //删除
    context.Table1.Delete(u => u.Id > 5);
    context.SaveChange();
    
    
    //更新
    context.Table1.Update(u => u.Id > 5, u => new Table1 { Age = 10 });
    context.SaveChange();
    复制代码

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

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

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

  • 相关阅读:
    [oracle 使用(1)] win7/10 下Oracle10g的安装与卸载
    [原创]利用爬虫技术获取网页数据,以及想要的指定数据
    [mysql使用(1)] 64位Linux下安装mysql-5.7.13-linux-glibc2.5-x86_64
    aop 常见的问题
    Git技巧:右键菜单怎么去除?
    jrebel激活
    python与mysql连接
    linux下mysql的安装
    Linux下jdk和tomcat安装
    Lotto
  • 原文地址:https://www.cnblogs.com/MR---Zhang/p/8628384.html
Copyright © 2011-2022 走看看