Профилирование Entity Framework с помощью MvcMiniProfiler - PullRequest
3 голосов
/ 22 июня 2011

У меня есть приложение Asp.net Mvc 3, которое сейчас использует MvcMiniProfiler.Я также использую Entity Framework для доступа к моей базе данных, и я бы хотел, чтобы профилировщик работал с моделью сущностей.Итак, я создал фабрику контекста ниже:

internal class ProfiledContextFactory : IContextFactory
{
    public ModelContainer GetContext()
    {
        var conn = ProfiledDbConnection.Get(GetConnection());
        return ObjectContextUtils.CreateObjectContext<ModelContainer>(conn);
    }

    private static EntityConnection GetConnection()
    {
        return new EntityConnection(ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString);
    }
}

Когда я запускаю приведенный выше код, который вызывается моим уровнем хранилища, когда я запускаю единицу работы, он застревает в бесконечном цикле, когдавызов CreateDbCommandDefinition в классе MvcMiniProfiler.ProfiledDbServices.

Есть какие-либо подсказки, что я делаю неправильно?

1 Ответ

3 голосов
/ 27 июня 2011

Проблема была в том, что мой GetConnection возвращал EntityConnection, а не SqlConnection в EntityConnection.Теперь я изменил свой код так, чтобы он читал:

private static SqlConnection GetConnection()
{
    var connStr = ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString;
    var entityConnStr = new EntityConnectionStringBuilder(connStr);
    return new SqlConnection(entityConnStr.ProviderConnectionString);
}

И он отлично работает.

Я обнаружил это, глядя на этот вопрос: Использование mvc-mini-profilerс EF 4.0 и Ninject

...