如何让MVC-mini-profiler在EF 4.1 Database First上运行

Rya*_*anW 2 entity-framework-4.1 database-first ef-database-first mvc-mini-profiler

为此,花费更多的时间来梳理SO.这是设置

  • MVC 3 App使用Repository模式,在2个数据库中有3个存储库.
  • EF 4.1数据库首先使用DBContext API进行数据库连接.
  • 安装来自nuget的mvc-mini-profiler

这就是我在存储库中创建Db Context的方式

public class TransactionRepository : BaseRepository, ITransactionRepository
{
    AccountingEntities _db = new AccountingEntities();

    // repository methods
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

public class InvoiceController : BaseController
{
    private ITransactionRepository _txnRepository;

    public InvoiceController()
    {
        _txnRepository = new TransactionRepository();
    }

    public InvoiceController(ITransactionRepository t)
    {
        _txnRepository = t;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,我已添加到web.config

  <system.data>
    <DbProviderFactories>
      <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
      <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>
Run Code Online (Sandbox Code Playgroud)

分析这些连接的后续步骤是什么?慢慢来,因为这是我第一次接触实体框架,所以假设EF连接/上下文细节很少.

Sam*_*ron 5

我重写了拦截代码,因此它更加健壮.

  1. nuget MiniProfiler.EF(版本1.9.1)
  2. 在App Init运行期间: MiniProfilerEF.Initialize();