加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:06:53 所属栏目:MsSql教程 来源:网络整理
导读:我想知道在将参数解析为SQL字符串之后是否可以看到SQL语句的实际内容.例如,给出以下代码: const string SQL = @"SELECT * FROM V_PROVIDER_WAGE_OVER_REVENUEWHERE SITE_ID = :SITE_ID AND VENDOR_ID = :VENDOR_ID AND date_paid = :DATE_FROM AND date_paid
我想知道在将参数解析为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提供程序一直支持参数到数据库.如果您的提供商没有,那么除非通过您的数据库自己的监控工具,否则它将不可见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读