2016-09-06 14 views
0

讓我們舉個例子:Dapper.net:如何使用參數值打印查詢

const string PERSON_SQL = "SELECT Id " + 
          "FROM Persons " + 
          "WHERE [email protected] AND [email protected]"; 
patientId = connection.ExecuteScalar<int>(PERSON_SQL, new 
{ 
    LastName = _entity.Lastname, 
    FirstName = _entity.Firstname 
}); 

我想用的參數值打印出實際的SQL查詢調試。我確信它有一些擴展或幫助功能...

+0

[有什麼方法可以跟蹤\使用Dapper記錄sql嗎?](https://stackoverflow.com/questions/18529965/is-there-any-way-to-trace-log-the- sql-using-dapper) – gbjbaanb

+0

這已經是第一篇文章的參考資料。請檢查它的評論。 –

回答

1

Dapper本身不包含該功能,作者傾向於使用MiniProfiler來捕獲SQL查詢(請參閱Marc Gravell's answer about something similar)。

您也可以使用SQL事件探查器,假定您正在使用SQL數據庫。最後,如果沒有什麼「現貨供應」滿足您的需求,您可以包裝與Dapper一起使用的數據庫連接和命令,並在調用ExecuteReader,ExecuteScalar等時捕獲/記錄查詢(和參數)。 。我在my answer to a question someone had about using Dapper with Access中有一些示例代碼(儘管示例代碼是與數據庫無關的,因此您可以在當前使用的任何數據庫中使用「WrappedDbConnection」)。

+0

SQL事件探查器需要特殊權限TRACE才能工作。 MiniProfiler的情況是否一樣? –

+0

MiniProfiler示例適用於Web應用程序。是否有C#/ WPF MiniProfiler包?我想如果沒有太多的代碼來重寫,使用包裝的數據庫連接將是最合適的。否則應該使用SQL分析器。 –

+0

有一個[MiniProfiler.Windows](https://github.com/nootn/MiniProfiler.Windows/)來回答我自己的問題之一,但它在過去的4年中還沒有更新過。 (儘管最近已經完成了對更新的拉取請求。) –