如何将mvc-mini-profiler用于数据库优先实体框架?

时间:2012-06-20 20:25:54

标签: entity-framework mvc-mini-profiler database-first

我正在尝试将mvc-mini-profiler用于db-first EF,但它无法正常工作。

(请注意我使用的是objectcontext,而不是dbcontext)

以下是我尝试过的stackoverflow列表:

版本:

  • 实体框架:4.3.1
  • MiniProfiler:2.0.2
  • MiniProfiler.ef:2.0.3

这就是我设置miniprofiler的方法:

  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();
    
  3. 如果我执行此操作,运行“context.MyEntities.ToList()”时会出现以下异常

    [System.Data.EntityCommandCompliationException]

    内部异常中的消息说: EntityClient不能用于从商店命令树创建命令定义。

    我配置错了吗?有什么帮助吗?

    感谢,

1 个答案:

答案 0 :(得分:1)

我使用MiniProfiler和数据库第一个实体框架,它确实运行良好。您可能需要根据以下相关答案关闭数据库上下文中的数据库初始化策略:https://stackoverflow.com/a/9762989/325727

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

参数null通过确保没有可用的初始化程序来关闭数据库初始化。