EFCore生成的SQL语句

科技资讯 投稿 49200 0 评论

EFCore生成的SQL语句

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

测试数据库:

NuGet包:

实体对象:

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

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

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生成的SQL语句

赞同 (119) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽