.Net5 EFCore

2021-02-24  本文已影响0人  王清水

    EFCore 查看Sql语句

1,控制台输出sql语句
    --引入包 Microsoft.Extensions.Logging.Console
    --在Db实体映射关系类中设置

调试时,sql语句在控制台上打印出来

2,SQL Server Profiler 工具追踪查询
    --打开SSMS工具,点击工具,选择 SQL Server Profiler
    --配置相关设置,主要是设置程序名称,就是数据库主机名;模板一般选择TSQL
    --事件选择勾选TSQL即可
    --运行程序后,根据端点跟踪,配合工具的暂停清除等可找到对应sql语句

EFCore  Linq

1,.Where(one => one.xx = xxx) 条件查询  【Where可多个连用】
2,.Contains(one.xx)  包含 
3,.OrderBy(one => one.Id)  以Id排序
4,.Select(one => new {xx = one.xx})  选择实体属性,返回匿名对象 
5,.Skip(int)  跳过多少条记录
6,.Take(int)  获取多少条记录
7,【Join内连】 连接2个实体组合条件查询 【 from A in EnA join B in EnB on A.Id equals B.Id ... 以某个属性值作为连接点,从而组合两个实体】
8,【Join左连】 【from A in EnA join B in EnB on A.Id equals B.Id into newList from one in newList.DefaultIfEmpty() 】

    EFCore事务

1,多次数据库实体操作,只使用一次SaveChanges,即可保证事务
2,独占数据库,使用context.Database.BeginTransaction() + EFCore操作 + context.SaveChanges() +  context.Database.Commit()

EFCore 事务伪代码

    EFCore调优

1,Query语句与数据操作分离,如ToList()方法,会立刻将数据读取到内存中,EFCore默认延迟执行是在使用数据数据的时候才会加载,而ToList()方法就是一种使用;
2,.Find() 方法带有缓存机制,查询时会先去内存中查找数据,而.FirstOrDefault()则没有;
3,只查询数据时,去除数据跟踪加入.AsNoTracking();

上一篇下一篇

猜你喜欢

热点阅读