[LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL

此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper
支持.net framework4.6.1及以上

支持.net core2.0及以上

目录

 

1.查看查询操作的SQL语句

首先需要保留QuerySet对象,因为根据Linq解析拼接SQL保存在Query对象的SqlProvider中

1
var query = Connection.QuerySet<T>();

因为该框架默认是懒加载,所以需要先执行该对象,才能获取到从Linq解析出的SQL

例如

1
query.List();

 

这时就得到了解析的对象

sql语句:query.SqlProvider.SqlString

定义的参数:query.SqlProvider.Params

 

2.查看增删改操作的SQL语句

1
var command=Connection.CommandSet<T>();

其他如上相同

 

或者不想执行sql到数据库,只想看解析出的结果,可以使用SqlProvider里的解析sql函数

例如

1
2
3
4
5
var querySet = conn.QuerySet<Comment>()
                              .Join<Comment, News>((a, b) => a.ArticleId == b.Id)
                              .Where(x => x.Id.Between(80, 100)
                              && x.SubTime.AddDays(-10) < DateTime.Now && x.Id > 10)
                              .SqlProvider.FormatCount();  

返回结果

 

3.使用Aop查看实际执行的SQL语句

3.1.8版本后增加Aop属性,可以监控sql执行的前后,并且只会作用于当前线程

复制代码
    //Sql执行前
            SqlMapper.Aop.OnExecuting += (ref CommandDefinition command) =>
            {
                //生成的sql
                var sql = command.CommandText;
                //生成的参数
                var param = command.Parameters;
            };
            //Sql执行后
            SqlMapper.Aop.OnExecuted += (ref CommandDefinition command) =>
             {
                 //生成的sql
                 var sql = command.CommandText;
                 //生成的参数
                 var param = command.Parameters;
             };
复制代码

 这种方法还可以监听到原生Dapper执行的前后

 

完整Demo可以去Github上下载:

https://github.com/a935368322/Kogel.Dapper.Test

如有问题也可以加QQ群讨论:

技术群 710217654

框架开源,可以加群下载源码

posted @   Kogel  阅读(5795)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示