缥帙各舒散,前后互相逾。这篇文章主要讲述查看要在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';
Edit
我假设参数占位符将被替换为值,但是仔细观察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
的内容。【查看要在Dapper中执行的SQL语句】大多数ADO.NET提供程序一直支持参数到数据库。如果您的提供商没有,那么除非通过您的数据库自己的监控工具,否则它将不可见。
推荐阅读
- Angular - 是否可以创建AppComponent的弹出窗口()
- Dapper提供程序相关参数令牌
- Android Widget时钟,运行离线时钟28小时,56分钟,56秒
- 10个最佳高级Joomla医疗保健模板
- 10个最佳幻灯片侧边栏菜单(抽屉)javascript和jQuery插件
- 十大最佳Tour(网站指南)Javascript和jQuery插件
- 7个最佳Markdown编辑器Javascript和jQuery插件
- 7个用于Java程序员的最佳免费IDE
- 7+ Android的最佳免费代码编辑器应用