1

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

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

这是我尝试过的stackoverflows列表:

版本:

  • 实体框架:4.3.1
  • 迷你分析器: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();
    

如果我执行此操作,运行“context.MyEntities.ToList()”时会发生以下异常

[System.Data.EntityCommandCompliationException]

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

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

谢谢,

4

1 回答 1

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通过确保没有可用的初始化程序来关闭数据库初始化。

于 2012-06-20T21:24:26.450 回答