EFCore——通过代码查看Sql语句(8)

一、为什么要使用代码使用SQL

Profiler是显示所有活动,如果一个服务器是多个人员使用,产生的Sql非常多,即使使用过滤也很麻烦

二、代码查看的方式

1.标准日志模式

(1)引入nuget包
Microsoft.Extensions.Logging.Console

(2)再添加 代码到DbContext
为了方便,不使用注入方式,直接使用静态方法

//作用是输出到控制台
private static ILoggerFactory loggerFactory = LoggerFactory.Create(b => b.AddConsole());

(3)然后在DBContext中使用
optionsBuilder.UseLoggerFactory(loggerFactory);
把loggerFactory 传到这就行了

  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer("server=localhost;uid=sa;pwd=123456;database=LTYHR;");
                //在这里使用
                optionsBuilder.UseLoggerFactory(loggerFactory);
            }

运行后结果
在这里插入图片描述

2.简单日志LogTo

(1)第一种的日志需要引入Ilogger框架,第二种更加简单,可以直接使用,
只是用起来简单,输出的东西不简单,输出了ef的工作过程。

   protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseSqlServer("server=localhost;uid=sa;pwd=123456;database=LTYHR;");
             
                optionsBuilder.LogTo(msg =>
                {
                    Console.WriteLine(msg);
                });
            }
        }

在这里插入图片描述
(2)可以使用简单的条件查询,筛选信息Sql信息

 optionsBuilder.LogTo(msg =>
                {
                    if (!msg.Contains("CommandExecuting")) return;
                    Console.WriteLine(msg);
                });

在这里插入图片描述

3.ToQueryString

1.LogTo会将所有使用到的 sql语句都打印出来,如果sql操作较多,还需要一个个去对应去查看具体哪一个,比较麻烦,而ToQuerystring可以直接打印某一个对应的具体的SQL语句
2.只能查看查询的sql语句
3.可以不真正的执行查询语句就能查看sql

var persons = db.TPersons.Where(p => p.Name == "LTY");
                string sql = persons.ToQueryString();
                Console.WriteLine(sql);

在这里插入图片描述

三、总结

写测试性代码使用简单日志,
正式需要提交sql给审核员需要使用标准日志
开发阶段想立即从繁杂的操作中直接查看,用ToQueryString

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有诗亦有远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值