0

我正在尝试使用实体框架跟踪提供程序来记录生成的 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 项目)

我在以下帖子中使用该解决方案:Entity Framework 4.1 - EFTracingProvider

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

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

我错过了什么?

4

1 回答 1

3

修改代码后,您需要在 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”前缀的上下文名称。确保在将应用程序部署到生产环境时禁用跟踪,方法是switchValueOff.

于 2013-04-05T09:10:44.733 回答