美文网首页
.Net5 EFCore

.Net5 EFCore

作者: 王清水 | 来源:发表于2021-02-24 17:21 被阅读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();

    相关文章

      网友评论

          本文标题:.Net5 EFCore

          本文链接:https://www.haomeiwen.com/subject/udksfltx.html