我想记录SQL查询,以检查LINQ查询到底在做什么,以了解如何改进它。
但是我找不到如何记录它。
请帮助我。
答案 0 :(得分:1)
如果您将MSSQL与EF一起使用,并打算解决如何将LINQ转换为SQL语句的问题。您可以尝试与MSSQL数据库引擎一起提供的SQL事件探查器
使用SQL事件探查器,您可以在其中记录和跟踪tsql事件。通过正确隔离应用程序中的LINQ调用,您可以跟踪数据库引擎接收到的SQL语句。
答案 1 :(得分:1)
我这样做是这样的: 在EntityFramework项目中更改DbContextConfigurer 为:
public static void Configure(DbContextOptionsBuilder<TestDbContext> builder, string connectionString, **ILoggerFactory loggerFactory = null**)
{
**builder.UseLoggerFactory(loggerFactory);**
builder.UseSqlServer(connectionString);
}
然后将文件MyProjectEntityFrameworkCoreModule.cs添加到PreInitiallize部分
public override void PreInitialize()
{
if (!SkipDbContextRegistration)
{
Configuration.Modules.AbpEfCore().AddDbContext<TestDbContext>(options =>
{
if (options.ExistingConnection != null)
{
TestDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection);
}
else
{
**var loggerFactory = IocManager.Resolve<ILoggerFactory>();**
TestDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString,**loggerFactory**);
}
});
}
//Uncomment below line to write change logs for the entities below:
//Configuration.EntityHistory.Selectors.Add("TestEntities", typeof(OrganizationUnit), typeof(Role), typeof(Tenant));
}