Dapper.net:如何打印带有参数值的查询结果

7
让我们来举一个例子:
const string PERSON_SQL = "SELECT Id " +
                           "FROM Persons " +
                           "WHERE LastName=@LastName AND FirstName=@FirstName";
patientId = connection.ExecuteScalar<int>(PERSON_SQL, new
{
    LastName = _entity.Lastname,
    FirstName = _entity.Firstname
});

我想为了调试目的打印出带有参数值的实际SQL查询语句。我相信有一些扩展或助手函数可以实现这一点...
1个回答

2

Dapper本身不包含这个功能,作者们倾向于使用MiniProfiler来捕获SQL查询(参见Marc Gravell关于类似问题的回答)。

如果您正在使用SQL数据库,也可以使用SQL Profiler。

最后,如果没有合适的“现成”解决方案,您可以将与Dapper一起使用的数据库连接和命令进行封装,并在调用ExecuteReader、ExecuteScalar等方法时捕获/记录查询(和参数)。我在回答有关使用Dapper与Access的问题的示例代码中提供了一些样例代码(虽然示例代码是数据库无关的,所以您可以在当前使用的任何数据库上使用“WrappedDbConnection”)。


SQL Profiler需要特殊的TRACE权限才能工作。MiniProfiler也是同样的情况吗? - J Pollack
MiniProfiler的示例是针对Web应用程序的。是否有C#/WPF MiniProfiler包?如果没有太多需要重写的代码,我猜使用封装的DB连接可能是最合适的选择。否则应该使用SQL分析器。 - J Pollack
有一个MiniProfiler.Windows可以回答我自己的问题,但它已经四年没有更新了。(尽管最近已经提交了更新的拉取请求。) - J Pollack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接