Dot-Net
查看要在 Dapper 中執行的 SQL 語句
我想知道在將參數解析為 SQL 字元串後,是否可以查看 SQL 語句的實際外觀。例如給出以下程式碼:
const string SQL = @" SELECT * FROM V_PROVIDER_WAGE_OVER_REVENUE WHERE SITE_ID = :SITE_ID AND VENDOR_ID = :VENDOR_ID AND date_paid >= :DATE_FROM AND date_paid <= :DATE_TO;"; conn.Query<ProviderWageOverRevenueModel>(SQL, new { VENDOR_ID = vendorId, SITE_ID = siteId, DATE_FROM = dateFrom, DATE_TO = dateTo }).ToList();我想知道是否在某個時候(可能在 Dapper 源中?)我可以看到類似的內容:
SELECT * FROM V_PROVIDER_WAGE_OVER_REVENUE WHERE SITE_ID = 199 AND VENDOR_ID = 17 AND date_paid >= '01/01/2014' AND date_paid <= '20/11/2014';編輯
我假設參數佔位符將被替換為值,但是根據仔細查看 Dapper 的原始碼後,我意識到它只是在 iDbCommand 上中繼來執行查詢,所以在查看這個問題之後可以看到已執行.Net 內的聲明?
我試試這個:
string query = cmd.CommandText; foreach (DbParameter p in cmd.Parameters) { query = query.Replace(p.ParameterName, p.Value.ToString()); }但是結果似乎不像我希望的那樣:
SELECT * FROM V_PROVIDER_WAGE_OVER_REVENUE WHERE 23411127316 = :23411127316 AND 23411076816 = :23411076816 AND date_paid >= :1/07/2014 10:11:34 PM AND date_paid <= :12/12/2014 12:00:00 AM;
就基本問題而言:最簡單的方法是使用迷你分析器和包裝連接之類的工具。
Dapper確實有一些查詢操作的東西 - 但實際上:不是在所示的情況下。所以簡單的回答是,執行的 SQL 正是
SQL.大多數 ADO.NET 提供程序都支持一直到數據庫的參數。如果您的提供者沒有,那麼除非通過您的數據庫自己的監控工具,否則它將不可見。