[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中

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

因為該框架默認是懶加載,所以需要先執行該對象,才能獲取到從Linq解析出的SQL

例如

query.List();

 

這時就得到了解析的對象

sql語句:query.SqlProvider.SqlString

定義的參數:query.SqlProvider.Params

 

2.查看增刪改操作的SQL語句

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

其他如上相同

 

或者不想執行sql到數據庫,只想看解析出的結果,可以使用SqlProvider里的解析sql函數

例如

 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

框架開源,可以加群下載源碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM