有没有办法将生成的sql转储到调试日志或其他什么地方?我在winforms解决方案中使用它,所以mini-profiler的想法对我不起作用。
发布于 2016-10-14 23:15:21
这并不是详尽的,本质上也有些繁琐,但是如果你有sql并且你想初始化你的参数,它对于基本的调试是有用的。
public static class DapperExtensions
{
if (args is null) throw new ArgumentNullException(nameof(args));
public static string ArgsAsSql(this DynamicParameters args)
{
var sb = new StringBuilder();
foreach (var name in args.ParameterNames)
{
var pValue = args.Get<dynamic>(name);
var type = pValue.GetType();
if (type == typeof(DateTime))
sb.AppendFormat("DECLARE @{0} DATETIME ='{1}'\n", name, pValue.ToString("yyyy-MM-dd HH:mm:ss.fff"));
else if (type == typeof(bool))
sb.AppendFormat("DECLARE @{0} BIT = {1}\n", name, (bool)pValue ? 1 : 0);
else if (type == typeof(int))
sb.AppendFormat("DECLARE @{0} INT = {1}\n", name, pValue);
else if (type == typeof(List<int>))
sb.AppendFormat("-- REPLACE @{0} IN SQL: ({1})\n", name, string.Join(",", (List<int>)pValue));
else
sb.AppendFormat("DECLARE @{0} NVARCHAR(MAX) = '{1}'\n", name, pValue.ToString());
}
return sb.ToString();
}
}
然后,您可以在即时窗口或监视窗口中使用它来抓取SQL。
发布于 2018-01-04 00:21:35
只是在这里添加一个更新,因为我看到这个问题仍然有相当多的命中-这些天我使用Glimpse (似乎它现在已经死了)或Stackify Prefix,它们都有sql命令跟踪功能。
这并不完全是我问原始问题时想要的,但解决了同样的问题。
https://stackoverflow.com/questions/18529965
复制相似问题