Мини-профилировщик с Simple.Data - PullRequest
4 голосов
/ 21 февраля 2012

Можно ли использовать Mini-Profiler с библиотекой Simple.Data?Я использую его для получения данных из MySql следующим образом:

var db = Database.OpenConnection(ConnectionString);
var book = db.Books.FindById(id);

Как мне использовать Profiler с этим кодом?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Вы можете указать Simple.Data использовать уже существующие соединения и обернуть ваше соединение профилированным соединением:

var db = Database.OpenConnection(ConnectionString);
using (var rawCnn =  new MySqlConnection(ConnectionString)) 
using (var profiledCnn = new MvcMiniProfiler.Data.ProfiledDbConnection(rawCnn, MiniProfiler.Current);
{
    profiledCnn.Open();
    ((AdoAdapter)db.GetAdapter()).UseSharedConnection(profiledCnn);
    book = db.Books.FindById(id);
    ((AdoAdapter)db.GetAdapter()).StopUsingSharedConnection();
}
0 голосов
/ 26 марта 2013

Существует новый хук, который был добавлен к Simple.Data, что обеспечивает лучшую интеграцию с MiniProfiler.

AdoAdapter.ConnectionCreated += (o, args) => args.OverrideConnection(new ProfiledDbConnection((DbConnection)args.Connection, MiniProfiler.Current));

Этот базовый способ позволяет вам подключатьк событию, созданному соединением, и переопределите его своим профилированным соединением.

ПРИМЕЧАНИЕ. На момент написания этого поста этого изменения еще не было в пакете nuget.так что вам нужна ваша пользовательская сборка Simple.Data

...