我正在尝试使用实体框架跟踪提供程序来记录生成的SQL持久化。
我将我的context类更改为如下所示:
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 MVC4项目)
我在下面的帖子中使用了这个解决方案:Entity Framework 4.1 - EFTracingProvider
但我做了一些更改,我不知道它们是否重要:
类是部分的而不是抽象的,构造函数是公共的而不是受保护的……
我遗漏了什么?
发布于 2013-04-05 17:10:45
修改代码后,您需要在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
,确保在将应用程序部署到生产环境时禁用跟踪。
https://stackoverflow.com/questions/15829898
复制相似问题