EFCore常规操作生成的SQL语句一览

中科白癜风公益惠民活动 http://hunan.ifeng.com/a/20170626/5773085_0.shtml

前言

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

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

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

测试数据库:Mysql

NuGet包:Pomelo.EntityFrameworkCo.MySql

实体对象:

DemoContextcontext=newDemoContext();DbSetUserusers=context.User;DbSetSchoolschools=context.School;

查询

ToList

users.ToList();

Whe

users.Whe(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

从指定数量开始忽略。

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

users.Skip(2).ToList();

SkipAndTake

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

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

GroupBy

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

Join(InnerJoin)

users.Join(schools,u=u.SchoolId,t=t.Id,(u,t)=newStudent{Name=u.Name,School=t.Name}).ToList();

GroupJoin(LeftJoin)

users.GroupJoin(schools,u=u.SchoolId,t=t.Id,(u,t)=new{user=u,school=t}).SelectMany(x=x.school.DefaultIfEmpty(),(u,t)=newStudent{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==));

RemoveRange

users.RemoveRange(users.Whe(c=c.Age));

搞定,这就是EFCo一些常规操作生成的Mysql语句了,SqlServer大家有时间可以自己试试




转载请注明:http://www.aierlanlan.com/tzrz/3940.html