此例子是使用LINQ2Dapper封裝,效率優於EntityFramwork,並且支持.NetFramework和.NetCore框架,只依賴於Dapper
支持.net framework4.6.1及以上
支持.net core2.0及以上
目錄
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基礎查詢
- [LINQ2Dapper]最完整Dapper To Linq框架(二)---動態化查詢
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---實體類關系映射
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL並行使用
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq實際執行的SQL
- [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表聯合與匿名類型返回
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---倉儲模式
- [LINQ2Dapper]最完整Dapper To Linq框架(八)---導航屬性
1.查看查詢操作的SQL語句
首先需要保留QuerySet對象,因為根據Linq解析拼接SQL保存在Query對象的SqlProvider中
var query = Connection.QuerySet<T>();
因為該框架默認是懶加載,所以需要先執行該對象,才能獲取到從Linq解析出的SQL
例如
這時就得到了解析的對象
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
框架開源,可以加群下載源碼