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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |