我正在使用MiniProfiler来分析我的sql命令。
我现在要处理的一个问题是linq生成的重复INSERT语句。
我已经将它们转换为SqlBulkCopy
命令,但是现在它似乎没有记录在MiniProfiler的sql视图中。
甚至会为SqlBulkCopy提供一个关联的命令字符串吗?
是否有可能使批量复制出现在sql命令列表中?
我至少可以将其计入%sql位吗?
我知道我可以使用,MiniProfiler.Current.Step("Doing Bulk Copy")
但这不会算作SQL,也不会在列表中显示任何详细信息。
当前代码如下:
public static void BulkInsertAll<T>(this DataContext dc, IEnumerable<T> entities)
{
var conn = (dc.Connection as ProfiledDbConnection).InnerConnection as SqlConnection;
conn.Open();
Type t = typeof(T);
var tableAttribute = (TableAttribute)t.GetCustomAttributes(
typeof(TableAttribute), false).Single();
var bulkCopy = new SqlBulkCopy(conn)
{
DestinationTableName = tableAttribute.Name
};
//....
bulkCopy.WriteToServer(table);
}
您应该可以使用CustomTimings
这些配置文件。这些包含在新的v3版本中,现在可以在nuget上使用。
您可以CustomTiming
在示例项目中看到的一些用法示例,该用法用于记录http和redis事件。
有关如何将其与结合使用的示例SqlBulkCopy
:
string sql = GetBulkCopySql(); // what should show up for the SqlBulkCopy event?
using (MiniProfiler.Current.CustomTiming("SqlBulkCopy", sql))
{
RunSqlBulkCopy(); // run the actual SqlBulkCopy operation
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句