我正在尝试使用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
但是我做了一些我不知道它们是否重要的更改:
该类是局部的而不是抽象的,构造函数是公共的而不是受保护的…
我想念什么?
修改代码后,您需要像这样在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。
switchValue
Off