EFCore常规操作生成的SQL语句一览
前言
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语句一览的更多相关文章
- Console程序下监控EFCore生成的SQL语句!
最近这两天在使用控制台程序学习EFCore,突然想看看生成的SQL语句,所以在网上找到一位大神的分享的方法! 准备工作: 1). MySqlEFCore NuGet: Pomelo.EntityF ...
- 【转】Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
原文链接:http://www.cnblogs.com/quanyongan/p/3152290.html 最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 ...
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynamic- ...
- Python3:sqlalchemy对sybase数据库操作,非sql语句
Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- 简单理解ORM,实体类生成查询SQL语句
目前有很多开源的ORM项目,大多情况下也不需要我们重复去造轮子,我们只需要了解轮子怎么造的,怎么用就可以,下面简单说一下怎么通过实体生成一个SQL语句: 先建立2个Attribute类,TableAt ...
- .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- 使用EntityFramework6.1的DbCommandInterceptor拦截生成的SQL语句
开始 EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Interception 命名空间,此命名空间下的对象可以 ...
随机推荐
- 10分钟go crawler colly从入门到精通
Introduction 本文对colly如何使用,整个代码架构设计,以及一些使用实例的收集. Colly是Go语言开发的Crawler Framework,并不是一个完整的产品,Colly提供了类似 ...
- printf()函数压栈a++与++a的输出
printf()中a++与++a的输出问题 在C语言中有个很常用的函数printf(),使用时从右向左压栈,也就是说在printf("%d %d %d %d\n",a,a++,++ ...
- GoF设计模式-23大设计模式(表格)-程序员必备+必背
在GoF经典著作<设计模式:可复用面向对象软件的基础>中一共描述了23种设计模式. <Design Patterns:Elements of Reusable Object-Orie ...
- ccf颁奖晚会
感想: 首先,十分感谢学校给我们参加比赛的机会,给予我们这次难能可贵的学习机会,第一次在这么大型的赛场中展现自己,我们也不免有些紧张.从最开始在线上进行模型训练,到我们不远千里在江苏进行场地的勘察,到 ...
- Mongo实验
MongoDB数据库操作 Student: { "name": "zhangsan", "score": { "English&q ...
- 【Android开发】Android 删除指定文件和文件夹
/** * 删除单个文件 * @param filePath 被删除文件的文件名 * @return 文件删除成功返回true,否则返回false */ public boolean deleteFi ...
- IDEA中Tomcat找不到war包导出按钮解决办法
解决办法 (1) 打开Idea,点击File,然后点击Project Structure-,进入项目结构 (2) 具体步骤看下图: (3) 具体步骤如下图: (4) 具体步骤如下图: (5) 问题解决 ...
- Java在方法中定义可变参数类型
学习目标: 掌握可变参数的应用 学习内容: 1.定义 在方法中传递数组有一种更简单的方式--方法的可变参数,其本质是一个语法糖,目的是让开发者写代码更简单. 2.语法 [修饰符] 返回值类型 方法名称 ...
- Exchange日志清理
1.清理日志--完整备份 Exchange Server 2013被部署在Windows Server 2012 及以上版本的操作系统中,使用操作系统内的"Windows Server Ba ...
- python的数据库编程
数据库的基础知识 一.数据库的概念 数据库将大量数据按照一定的方式组织并存储起来,是相互关联的数据的集合.数据库中的数据不仅包括描述事物数据的本身,还包括相关数据之间的联系.数据库可以分为关系型数据库 ...