Ich verwende MiniProfiler, um meine SQL-Befehle zu profilieren.SqlBulkCopy wird als sql in MiniProfiler angezeigt
Ein Problem, mit dem ich es jetzt zu tun habe, sind wiederholte INSERT-Anweisungen, die von linq generiert werden.
Ich habe sie in einen SqlBulkCopy
Befehl umgewandelt, aber jetzt scheint es nicht in der SQL-Ansicht in MiniProfiler aufzuzeichnen.
Würde es sogar eine zugehörige Befehlszeichenfolge für eine SqlBulkCopy geben?
Ist es möglich, dass die Massenkopie in der Liste der SQL-Befehle angezeigt wird?
Kann ich es zumindest im% sql Bit zählen lassen?
Ich bin mir bewusst, ich MiniProfiler.Current.Step("Doing Bulk Copy")
verwenden könnte, aber das wäre wie SQL nicht zählen, und würde in der Auflistung mit jedem Detail nicht zeigen.
Aktuelle Code unten:
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);
}
Die Daten gesendet werden als spezielle TDS-Pakete, aber ich weiß nicht, ob die 'BULK INSERT' mit SQL eingeleitet wird. Es erscheint in SQL Profiler als SQL, aber das kann falsch sein. – usr
Ich arbeite an [MiniProfiler 3.0] (https://github.com/MiniProfiler/dotnet), das eine generische 'CustomTiming' Klasse hinzufügt, die es erlaubt, die" Massenkopie "zu profilieren und sie in der Benutzeroberfläche anzeigen zu lassen genauso wie "sql". Sobald es draußen ist, werde ich mit einem Beispiel antworten. –
@JarrodDixon: Großartig! Irgendeine Idee auf Zeitskala (über 6-8 Wochen)? :) –