0

プロファイラーは私のMVC3アプリにインストールされており、動作しますが、私が苦労しているのは、EF4db部分を正しくセットアップする正しい方法です。

プロファイラーのホームページから

ファクトリを使用して接続を返します。

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

エンティティフレームワーク

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

さて、すぐに、MyModel GetメソッドのGetConnection()の呼び出しがGetOpenConnection()を読み取る必要があるかどうかを明確にしたいですか?

次に、タイプミスの場合、CreateRealConnectionはどのようになりますか?プロバイダーモデルを介してODP.NETを使用していますが、モデルライブラリにOracle.DataAccess.Clientへの参照がないため、可能であればそのままにしておくことをお勧めします。

また、このすべてのコードは私のリポジトリのどこにありますか?

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

ありがとう、スティーブン

4

2 に答える 2

1

私はこの投稿MiniProfilerからEF「モデルファースト」edmxモデル を取り出し、データベースの実用的な例を最初につなぎ合わせることができました。許可されたこのコードは、コントローラーからプルアップして引き出す必要があるかもしれませんが、アドバタイズされたとおりに機能しています。

ちなみに、私の最初の質問は、ドキュメントにタイプミスがあるかどうかを尋ねましたが、私はそうは思わないので、2つの異なる使用法があり、私が思ったように相互に依存していません。

mvc-mini-profiler FTW!

よろしく、スティーブン

    public ActionResult Index()
    {
        // http://code.google.com/p/mvc-mini-profiler/
        // https://stackoverflow.com/questions/6802855/miniprofiler-with-ef-model-first-edmx-model

        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);
    }
于 2011-07-27T04:46:25.400 に答える
-1

ミニプロファイラーは4.0のみだったと言うつもりでしたが、最近更新されました。これは役立つかもしれません(あなたは最初にコードを書いているわけではありませんが)

EntityFrameworkCodeFirstでのmvc-mini-profilerデータベースプロファイリングの使用

于 2011-07-25T12:05:54.473 に答える