1

db-first EFにmvc-mini-profilerを使用しようとしていますが、正しく機能していません。

(dbcontextではなくobjectcontextを使用していることに注意してください)

これが私が試したスタックオーバーフローのリストです:

バージョン:

  • エンティティフレームワーク:4.3.1
  • MiniProfiler:2.0.2
  • MiniProfiler.ef:2.0.3

これが私がミニプロファイラーをセットアップする方法です:

  1. Global.asaxに次のものを追加しました

    protected void Application_BeginRequest(
    {
        MiniProfiler.Start();   
    }
    
    protected void Application_EndRequest()
    {
        MiniProfiler.Stop();
    }
    
    protected void Application_Start()
    {
        ...
    
        MiniProfilerEF.Initialize_EF42();
    }
    
  2. 次に、objectcontextを構成します。

    var entityConnection = new EntityConnection(ConnectionString);
    var profiledDbConnection = new EFProfiledDbConnection(entityConnection, MiniProfiler.Current);
    var context = profiledDbConnection.CreateObjectContext<MyContext>();
    var list = context.MyEntities.ToList();
    

これを実行すると、「context.MyEntities.ToList()」の実行時に次の例外が発生します。

[System.Data.EntityCommandCompliationException]

内部例外のメッセージは次のように述べています。EntityClientを使用して、ストアコマンドツリーからコマンド定義を作成することはできません。

設定を間違えましたか?何か助けはありますか?

ありがとう、

4

1 に答える 1

1

私は MiniProfiler とデータベースを最初に使用する Entity Framework を使用していますが、うまく機能します。この関連する回答に従って、データベースコンテキスト内のデータベース初期化戦略をオフにする必要がある場合があります: https://stackoverflow.com/a/9762989/325727

public class EmployeeContext : DbContext
{
    static EmployeeContext() { Database.SetInitializer<EmployeeContext>(null); }    
    public IDbSet<Employee> Employees { get; set; } 
}

このパラメーターnullは、使用可能な初期化子がないことを確認することにより、データベースの初期化をオフにします。

于 2012-06-20T21:24:26.450 に答える