2013-04-05 43 views
0

我试图使用实体框架跟踪提供程序来记录生成的SQL Stages。记录实体框架5的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

,但我做了一些改变,我不知道他们是重要的:

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

我在想什么?

回答

2

修改代码后,您需要启用在你的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来禁用跟踪。

+0

谢谢!问题解决了......我忘了这一步。 – amp 2013-04-05 09:29:20

+0

这种方法可以应用于代码优先的方法,我是对吗? – amp 2013-04-05 09:33:41

+1

是应该的。你有什么问题吗? – 2013-04-05 09:36:35