博客主页 😞
efcore的基础应用
efcore的基础应用

Author:

芝麻

©

Wordage:

共计 2232 字

needs:

约 1 分钟

Popular:

208 ℃

Created:

:本文最后更新于2023年09月07日,已经过了855天没有更新,若内容或图片失效,请留言反馈
目 录

efcore的基础使用

一、基础查询

//查询第一条数据,为空则抛出异常
数据库上下文.查询类.first()
//查询第一条数据,为空则返回null
数据库上下文.查询类.firstOrdefault()
//查询一条数据,为空则抛出异常,多条数据也抛出异常
数据库上下文.查询类.single()
//查询一条数据,为空则返回null
数据库上下文.查询类.singleOrdefault()
//查询所有数据
数据库上下文.查询类.tolist()
//条件查询
数据库上下文.查询类.where(p => p.id > 1).tolist()
//排序查询——正序
数据库上下文.查询类.OrderBy(p => p.id).tolist()
//排序查询——倒序
数据库上下文.查询类.OrderByDescending(p => p.id).tolist()
//跳过10条数据
数据库上下文.查询类.skip(10).tolist()
//取10条数据
数据库上下文.查询类.take(10).tolist()
//分页查询
var pageIndex = 1;
var pageSize = 10;
var room = context.classRooms.Skip((pageIndex - 1)*pageSize).Take(pageSize).ToList();
//非跟踪查询
1.AsNoTracking()——单条
2.批量——修改context
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
3.UseQueryTrackingBehavior

二、基础新增

//单个添加
数据库上下文.Add(new 查询类(){属性})
//多个添加
context.AddRange(new List<>(Student){
            new Student(){classid = 2,name="aaa"},
            new Student(){classid = 2,name="bbb"}
                 })

三、保存数据

1、SaveChange()
2、批量更新和删除ExecuteUpdate/ExecuteDelete
上下文.查询类.where(条件).ExecuteDelete();

四、基础修改

//读取一个条数
var stuUpdate = context.Students.FirstOrDefault(p => p.Name == "aa");
//修改属性
stuUpdate.Name += "测试修改";
//设置状态为修改
context.Entry().State = EntityState.Modified;
context.SaveChanges();

//批量修改
context.Students.where(p=>p.classid == 2).ExecuteUpdate(s => s.SetProperty(b => b.Name,"[修改]"));

五、基础删除

//单个删除
var delstu = context.Students.FirstOrDefault();
context.Students.Remove(delstu);
context.SaveChanges();
//批量删除
上下文.查询类.where(条件).ExecuteDelete();

六、事务

//开启事务
using var transaction = context.Database.BeginTransaction();
try
{
    数据库操作代码
    。。。。
    //提交事务
    transaction.commit();
    
}catch(Exception ex)
{
    //回滚事务
    transaction.rollback();
    throw;
}

七、分组和统计

var groupData = context.Students
    //使用groupby分组,依据classid
        .GroupBy(s => s.ClassId)
        .Select(g => new
                {
            //拿到classId,由于是按classid分组的,所以使用min或者max都是一样的
            ClassId = g.Max(s=>s.classId),
            StudentCount = g.Count()
        });
文章二维码
efcore的基础应用
 博主关闭了当前页面的评论
博客主页 芝麻博客·单人主站 哦哈哟
萌ICP备20220001号 苏ICP备2021051187号-1 本站已运行 3 年 69 天 16 小时 23 分 自豪地使用 Typecho 建站,并搭配 MyDiary 主题 Copyright © 2022 ~ 2026. 芝麻博客·单人主站 All rights reserved.
打赏图
打赏博主
欢迎
欢迎
欢迎访问芝麻博客·单人主站
与其说是博客,不如说是错题集
搜 索
足 迹
分 类
  • 默认分类
  • 前端
  • 后端
  • 模型
  • 游戏
  • 日语
  • 博客