уточнение конфигурации mvc-mini-profiler - PullRequest
0 голосов
/ 22 июля 2011

Профилировщик установлен в моем приложении MVC 3, и он работает, но мне трудно справиться с правильным способом правильной настройки порции EF 4 дБ.

с домашней страницы профилировщика

Используйте фабрику для возврата вашего соединения:

public static DbConnection GetOpenConnection()
{
    var cnn = CreateRealConnection(); 

    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current);
}

Entity Framework

public static MyModel Get()
{
    var conn = ProfiledDbConnection.Get(GetConnection());
    return ObjectContextUtils.CreateObjectContext<MyModel>(conn);
}

Хорошо, поэтому сразу хотелось бы уточнить, должен ли вызов метода GetConnection () метода GetMenel Get читать GetOpenConnection ()?

Тогда, если это опечатка, как будет выглядеть CreateRealConnection? Я использую ODP.NET через модель провайдера, и моя библиотека моделей не имеет ссылки на Oracle.DataAccess.Client, и я предпочел бы сохранить ее, если смогу.

Кроме того, где весь этот код будет находиться в моем хранилище?

public IQueryable<PRODUCTHEADER> Products
{
    get{ return ctx.PRODUCTHEADERs.AsQueryable(); }
}

Спасибо, Стивен

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Я смог взять фрагменты из этого поста MiniProfiler с EF "модель сначала" модель edmx и сначала собрать рабочий пример для базы данных.Теперь, возможно, этот код может потребоваться вытащить из контроллера, но он работает так, как объявлено.

В качестве примечания, мой оригинальный вопрос спрашивал, была ли опечатка в документации, и я не верю в это, есть два разных использования, и они НЕ зависят друг от друга, как я думал.

MVC-мини-профилировщик FTW!

С уважением, Стивен

    public ActionResult Index()
    {
        // http://code.google.com/p/mvc-mini-profiler/
        // /4211357/miniprofiler-s-ef-model-snachala-model-edmx

        var profiler = MiniProfiler.Current;

        var pConn = GetConnection();
        var context = pConn.CreateObjectContext<ChinookEntities>();

        using (profiler.Step("Doing complex stuff"))
        {
            using (profiler.Step("Step A"))
            {
                Thread.Sleep(100);
            }
            using (profiler.Step("Step B"))
            {
                Thread.Sleep(250);
            }
            using (profiler.Step("Step C"))
            {
                var result = context.Albums.AsQueryable()
                    .OrderBy(a => a.ArtistId).First();

                return View(result);
            }
        }
    }

    private static DbConnection GetConnection()
    {
        // A SqlConnection, SqliteConnection ... or whatever
        var connectionString = ConfigurationManager.ConnectionStrings["ChinookEntities"].ConnectionString;
        var ecsb = new EntityConnectionStringBuilder(connectionString);
        var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
        // wrap the connection with a profiling connection that tracks timings 
        return ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current);
    }
0 голосов
/ 25 июля 2011

Я собирался сказать, что мини-профилировщик был только 4.0, но он был недавно обновлен. Это может помочь (хотя вы не код первым)

Использование профилирования базы данных mvc-mini-profiler с использованием Entity Framework Code First

...