3

MvcMiniProfiler を使用している Asp.net Mvc 3 アプリケーションがあります。また、Entity Framework を使用してデータベースにアクセスしており、プロファイラーがエンティティ モデルを操作できるようにしたいと考えています。これまでのところ、以下の Context ファクトリを作成しました。

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);
    }
}

作業単位を開始するときにリポジトリ レイヤーによって呼び出される上記のコードを実行すると、MvcMiniProfiler.ProfiledDbServices クラスで CreateDbCommandDefinition を呼び出すときに無限ループに陥ります。

私が間違っていることの手がかりはありますか?

4

1 に答える 1

3

問題は、GetConnection が EntityConnection 内の SqlConnection ではなく、EntityConnection を返すことでした。コードを次のように変更しました。

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

そして、それはうまくいきます。

この質問を見ているときにこれを発見しました: Using mvc-mini-profiler with EF 4.0 and Ninject

于 2011-06-27T11:06:08.917 に答える