一尘不染

记录Entity Framework 5的SQL语句以进行数据库优先处理

sql

我正在尝试使用Entity Framework Tracing Provider记录生成的SQL语句。

我将上下文类更改为以下内容:

public partial class MyDBContext: DbContext
{

    public MyDBContext(string nameOrConnectionString)
    : base(EFTracingProviderUtils.CreateTracedEntityConnection(nameOrConnectionString), true)
{
    // enable sql tracing
    ((IObjectContextAdapter) this).ObjectContext.EnableTracing();
}

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    //DbSets definition....
}

但这不会将SQL语句记录在“输出”窗口中…

我应该在课程中还是在web.config文件中添加更多内容?(我正在研究一个ASP.NET MVC 4项目)

我在以下帖子中使用该解决方案:实体框架4.1-EFTracingProvider

但是我做了一些我不知道它们是否重要的​​更改:

该类是局部的而不是抽象的,构造函数是公共的而不是受保护的…

我想念什么?


阅读 170

收藏
2021-03-10

共1个答案

一尘不染

修改代码后,您需要像这样在web.config中启用跟踪:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="EntityFramework.NorthwindEntities" switchValue="All" />
    </sources>
  </system.diagnostics>
</configuration>

TraceSource的名称应为您的上下文名称,前缀为“
EntityFramework”。通过将设置为switchValue,确保在将应用程序部署到生产环境时禁用跟踪Off

2021-03-10