Używam programu MiniProfiler do profilowania moich poleceń sql.Uzyskiwanie SqlBulkCopy do wyświetlenia jako sql w MiniProfilatorze
Jednym z problemów, z którymi mam do czynienia, jest powtarzanie instrukcji INSERT generowanych przez linq.
Przekształciłem je w komendę SqlBulkCopy
, ale teraz nie wydaje się, aby było ono nagrane w widoku sql w programie MiniProfiler.
Czy istnieje nawet skojarzony ciąg poleceń dla SqlBulkCopy?
Czy można uzyskać masową kopię, aby pojawiła się na liście poleceń sql?
Czy mogę przynajmniej sprawić, aby było policzone w bicie% sql?
Jestem świadomy mogę użyć MiniProfiler.Current.Step("Doing Bulk Copy")
ale nie liczyłbym jak SQL, a nie pokazują w zestawieniu z każdym szczególe.
Aktualny kod poniżej:
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);
}
Dane są wysyłane jako specjalne pakiety TDS, ale nie wiem, czy 'BULK INSERT' jest inicjowana za pomocą SQL. Pojawia się w SQL Profiler jako SQL, ale to może być fałszywe. – usr
Pracuję nad programem [MiniProfiler 3.0] (https://github.com/MiniProfiler/dotnet), który dodaje bardziej ogólną klasę 'CustomTiming', umożliwiając profilowanie" kopii zbiorczej "i wyświetlanie jej w interfejsie użytkownika w ten sam sposób, co "sql". Gdy to się skończy, odpowiem na przykład. –
@JarrodDixon: Świetnie! Masz pojęcie o skali czasowej (powyżej 6-8 tygodni)? :) –