2014-09-03 5 views
5

У меня есть одно консольное приложение и добавлено Miniprofiler для этого приложения.Как хранить данные MIniProfiler с помощью консольного приложения

Теперь я хочу хранить данные Miniprofiler в базе данных. Я выполнил сценарий для создания таблиц в базе данных. Вы можете найти скрипт here!

Я рассмотрел ответ на this

Но как я могу хранить значение профилировщика для связанных таблиц?

В MVC ниже линии используется для хранения значений:

MiniProfiler.Settings.Storage = new SqlServerStorage("<your connection string>"); 

Как я могу хранить эти значения из приложения консоли?

+0

Сейчас я пишу их в один текстовый файл. Но я хочу сохранить все значения в базе данных – Ankita

+0

Я рассмотрел это: https://stackoverflow.com/questions/14695460/how-to-store-mvc-miniprofiler-results – Ankita

+0

hmmm, на самом деле это похоже, что вы * должны * просто необходимо использовать 'MiniProfiler.Settings.Storage.Save (профилировщик);'; ты это пробовал? Это должно заполнить 'MiniProfilers' и' MiniProfilerTimings'. –

ответ

4

Вышеописанное полностью работает и записывает ожидаемые данные в таблицы MiniProfilers и MiniProfilerTimings. Ключевые биты в коде установки являются:

  • указания поставщика хранилища (вы уже это)
  • задающий поставщика профилировщика (Singleton в моем случае)
  • старт/стоп профилировщика вокруг работы
  • сохранить профилировщика после работы

Код:

using StackExchange.Profiling; 
using StackExchange.Profiling.Storage; 
using System; 
using System.Threading; 
//using StackExchange.Profiling.Helpers.Dapper; // only for table creation 
//using System.Data.SqlClient; // only for table creation 

static class Program 
{ 
    static void Main() 
    { 
     const string ConnectionString = "Initial Catalog=MiniProf;Data Source=.;Integrated Security=true;"; 

     //using(var conn = new SqlConnection(ConnectionString)) 
     //{ 
     // conn.Open(); 
     // conn.Execute(SqlServerStorage.TableCreationScript); 
     //} 
     MiniProfiler.Settings.Storage = new SqlServerStorage(ConnectionString); 
     MiniProfiler.Settings.ProfilerProvider = new SingletonProfilerProvider(); 
     MiniProfiler.Settings.ProfilerProvider.Start(ProfileLevel.Info); 
     DoStuff(); 
     MiniProfiler.Settings.ProfilerProvider.Stop(false); 

     MiniProfiler.Settings.Storage.Save(MiniProfiler.Current); 
    } 
    static void DoStuff() 
    { 
     using (MiniProfiler.Current.Step("DoStuff")) 
     { 
      for (int i = 0; i < 5; i++) 
      { 
       using (MiniProfiler.Current.Step("Loop iteration")) 
       { 
        Thread.Sleep(200); 
        Console.Write("."); 
       } 
      } 
     } 
     Console.WriteLine(); 
    } 
} 
+0

Спасибо. Но, как я уже говорил вам, когда пишу MiniProfiler.Settings.Storage = новый SqlServerStorage (ConnectionString); он выдает ошибку: Тип или имя пространства имен «Настройки» не существует в пространстве имен «MiniProfiler» (вам не хватает ссылки на сборку?) Можете ли вы посоветовать, что нужно сделать для этой ссылки? – Ankita

+0

@ Анкита, приведенный выше код, использует miniprofiler 3.1.1.140 от nuget и компилирует. Какую версию ты используешь? –

+0

Та же версия miniprofiler 3.1.1.140 Нужно ли мне добавить для этого DLL? – Ankita

 Смежные вопросы

  • Нет связанных вопросов^_^