前言

EFCore的性能先不说,便捷性绝对是.Net Core平台下的ORM中最好用的,主要血统还百分百纯正。

EFCore说到底还是对数据库进行操作,无论你是写Lamda还是Linq最后总归都是要生成SQL语句。

今天这篇文章就是要列举一下我们开发中的一些常规写法在数据库中生成的SQL语句。

测试数据库:Mysql
NuGet包:Pomelo.EntityFrameworkCore.MySql
实体对象:

DemoContext context = new DemoContext();
DbSet<User> users = context.User;
DbSet<School> schools = context.School;

查询

ToList
users.ToList();

Where
users.Where(u => u.SchoolId == 1).ToList();

OrderBy
users.OrderBy(u => u.Age).ToList();

ThenBy
users.OrderBy(u => u.Age).ThenBy(u => u.SchoolId).ToList();

Take

返回执行数量的元素。

users.Take(2).ToList();

Skip

从指定数量开始忽略。

这里出现了一个奇怪的数字:18446744073709551610,这是Mysql一张表理论上能存储的最大行数。

users.Skip(2).ToList();

Skip And Take

我们通常的分页操作就是根据这两个方法实现的。

users.Skip(1).Take(2).ToList();

GroupBy
users.GroupBy(u => u.SchoolId)
.Select(u => new { count = u.Count(), item = u.FirstOrDefault() })
.ToList();

Join(Inner Join)
users.Join(schools, u => u.SchoolId, t => t.Id, (u, t) =>
new Student
{
Name = u.Name,
School = t.Name
}).ToList();

GroupJoin(Left Join)
users.GroupJoin(schools, u => u.SchoolId, t => t.Id, (u, t) => new { user = u, school = t })
.SelectMany(x => x.school.DefaultIfEmpty(), (u, t) =>
new Student
{
Name = u.user.Name,
School = t.Name
}).ToList();

增删改

Add
users.Add(user);

AddRange
users.AddRange(userList);

Update
users.Update(user);

UpdateRange
users.UpdateRange(userList);

Remove
users.Remove(users.FirstOrDefault(c => c.Id == 100));

RemoveRange
users.RemoveRange(users.Where(c => c.Age > 100));


搞定,这就是EFCore一些常规操作生成的Mysql语句了,SqlServer大家有时间可以自己试试,要有什么我没想但的常规操作大家也可以在评论区提一下。

EFCore常规操作生成的SQL语句一览的更多相关文章

  1. Console程序下监控EFCore生成的SQL语句!

    最近这两天在使用控制台程序学习EFCore,突然想看看生成的SQL语句,所以在网上找到一位大神的分享的方法! 准备工作: 1). MySqlEFCore NuGet:   Pomelo.EntityF ...

  2. 【转】Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    原文链接:http://www.cnblogs.com/quanyongan/p/3152290.html 最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和  ...

  3. Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynamic- ...

  4. Python3:sqlalchemy对sybase数据库操作,非sql语句

    Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...

  5. Python3:sqlalchemy对mysql数据库操作,非sql语句

    Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...

  6. 简单理解ORM,实体类生成查询SQL语句

    目前有很多开源的ORM项目,大多情况下也不需要我们重复去造轮子,我们只需要了解轮子怎么造的,怎么用就可以,下面简单说一下怎么通过实体生成一个SQL语句: 先建立2个Attribute类,TableAt ...

  7. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  8. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  9. 使用EntityFramework6.1的DbCommandInterceptor拦截生成的SQL语句

    开始 EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Interception 命名空间,此命名空间下的对象可以 ...

随机推荐

  1. ROS的安装-> rosdep init /update报错2022.02.24实测有效

    ROS的安装-> rosdep init /update报错2022.02.24实测有效   一. 解决rosdep_init问题 正常执行sudo rosdep init会报错,如下: ERR ...

  2. Linux ftp服务器部署(最简单的ftp教程)

    之前在阿里云领了一个ECS服务器(顺便说一句,白嫖的,真香~),就想着做点什么,然后试着做个 ftp 站点,因为第一次尝试,结果走了不少弯路.最后终于完成了,研究了两天(哎~,脑壳笨没办法)就想着记录 ...

  3. 基于MPC算法的车辆多目标自适应巡航控制系统研究_荆亚杰

  4. Bootstrap 之 Metronic 模板的学习之路 - (1)总览

    写在前面 bootstrap 的模板非常多,Envato 上有着各种各样的免费及付费模板.Metronic 是我最喜欢的模板之一(看一眼就喜欢上的那种),当前售价 $28 ,觉得赞的,不妨支持一下作者 ...

  5. Vuet.js规则详解,它是你不知道的强大功能?

    Vuet.js是什么? Vuet.js是给Vue.js提供状态管理的一个工具,与vuex不同,它是一种崇尚规则定制的状态管理模式.事先将状态更新的规则写好,然后将规则注入到组件中,然后状态按照预订的规 ...

  6. 判断链表是否有环(Java实现)

    判断给定的链表中是否有环.如果有环则返回true,否则返回false. 解题思路:设置两个指针,slow和fast,fast每次走两步,slow每次走一步,如果有环的话fast一定会追上slow,判断 ...

  7. jboss7学习4-具体下载安装

    一.JBoss优点: a.Jboss支持热部署,将归档后的JAR.WAR文件到部署目录下自动加载部署,自动更新. b.在高并发访问时,性能比Tomcat更加优秀.高效. c.Jboss在设计方面与To ...

  8. Python简单文件读写

    ''' 用文件存储账户信息 使用列表存储多个账户信息,每个账户为一个字典对象 ''' users=[] #创建一个空列表 users.append({'id':'admin','pwd':'1235@ ...

  9. coolshell-初见

    首页:https://coolshell.cn/tag/programmer 我是怎么招聘程序员的 https://coolshell.cn/articles/1870.html 程序员需要具备的基本 ...

  10. linux中LNMP架构和location用法

    location 使用Nginx Location可以控制访问网站的路径,但一个server可以有多个location配置, 多个location的优先级该如何区分 location匹配符号 匹配符 ...