2

为此,我们花了更多时间梳理 SO。这是设置

  • MVC 3 App 使用存储库模式,跨 2 个数据库具有 3 个存储库。
  • EF 4.1 数据库首先使用DBContext API进行两个数据库连接。
  • 从 nuget 安装 mvc-mini-profiler

这就是我在存储库中创建 Db 上下文的方式

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

    // repository methods
}

然后在控制器中

public class InvoiceController : BaseController
{
    private ITransactionRepository _txnRepository;

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

    public InvoiceController(ITransactionRepository t)
    {
        _txnRepository = t;
    }
}

最后,我添加到 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>

分析这些连接的下一步是什么?慢慢来,因为这是我第一次接触 Entity Framework,所以对 EF 连接/上下文细节的假设很少。

4

1 回答 1

5

我重写了拦截代码,使其更加健壮。

  1. nuget MiniProfiler.EF(版本 1.9.1)
  2. 在 App Init 运行期间:MiniProfilerEF.Initialize();
于 2011-08-29T08:05:15.590 回答