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

c# – 让SqlBulkCopy在MiniProfiler中显示为sql

发布时间:2020-12-15 05:39:57 所属栏目:百科 来源:网络整理
导读:我正在使用MiniProfiler来配置我的sql命令. 我正在处理的一个问题是由linq生成的重复INSERT语句. 我已将它们转换为SqlBulkCopy命令,但是现在它似乎没有将它记录在MiniProfiler的sql视图中. 是否会为SqlBulkCopy提供相关的命令字符串? 是否可以将批量副本显
我正在使用MiniProfiler来配置我的sql命令.

我正在处理的一个问题是由linq生成的重复INSERT语句.

我已将它们转换为SqlBulkCopy命令,但是现在它似乎没有将它记录在MiniProfiler的sql视图中.

是否会为SqlBulkCopy提供相关的命令字符串?

是否可以将批量副本显示在sql命令列表中?

我至少可以在%sql位中计算它吗?

我知道我可以使用MiniProfiler.Current.Step(“正在进行批量复制”),但这不会算作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对这些进行分析.这些包含在现在为 available on nuget的 new v3 version中.

您可以在the sample project中看到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
}

(编辑:李大同)

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

    推荐文章
      热点阅读