Мини-профайлер с Simple.Data

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

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

Как я могу использовать Profiler с этим кодом?


person user1224129    schedule 21.02.2012    source источник


Ответы (2)


Вы можете указать 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();
}
person Mark Rendle    schedule 27.02.2012

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

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

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

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

person kay.one    schedule 25.03.2013