gpt4 book ai didi

.net - 查看Dapper中要执行的SQL语句

转载 作者:行者123 更新时间:2023-12-04 08:48:35 83 4
gpt4 key购买 nike

我想知道在将参数解析为 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 上中继来执行查询,所以在查看了这个 question 之后可以在.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 提供程序都支持一直到数据库的参数。如果您的提供商没有,那么除非通过您的数据库自己的监控工具,否则它将不可见。

关于.net - 查看Dapper中要执行的SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27452786/

83 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com