C# 检索实体框架核心生成的SQL
我正在尝试检索实体框架为以下LINQ查询生成的原始SQL:C# 检索实体框架核心生成的SQL,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我正在尝试检索实体框架为以下LINQ查询生成的原始SQL: pagedItemResults = from firstItem in dbData.Accession join secondItem in pagedRowNumberResults on firstItem.AccessionNumber equals secondItem select
pagedItemResults = from firstItem in dbData.Accession
join secondItem in pagedRowNumberResults
on firstItem.AccessionNumber equals secondItem
select new PaginationResultRow
{
Number = firstItem.AccessionNumber,
ID = firstItem.AccessionId,
Name = firstItem.AcquisitionType.Name,
Description = firstItem.Description
};
虽然它可能非常简单,与之前版本的EF的其他答案类似,但我运气不好,在网上什么也没找到。。有什么想法吗???我真的很喜欢MiniProfiler,请看。如果没有类似的东西,我会说您必须在实际数据库上使用探查器。您可以通过实现iLogger提供程序来打开日志记录。请参阅文档中的 您只需要向单个上下文实例注册记录器。注册后,它将用于同一AppDomain中上下文的所有其他实例
您可以通过以下方式将生成的tsql记录到输出窗口: Microsoft.Extensions.Logging.Debug 首先,从Nuget获取它,然后在您的上下文中,您必须定义一个LoggerFactory 之后,在上下文中的onconfigurang中使用它
public static readonly Microsoft.Extensions.Logging.LoggerFactory _loggerFactory =
new LoggerFactory(new[] {
new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
});
optionsBuilder.UseLoggerFactory(_loggerFactory);
尝试在SQL实例上运行跟踪?我知道在普通实体框架上,您可以只执行pagedItemResults.ToString,它将输出查询字符串,您不能在core上执行此操作吗?注意,我认为他可能正在使用ASP.NET core,根据文档,它仍然可以工作,但在注册记录器所需执行的操作方面,它的说明略有不同。
private static string[] _categories =
{
typeof(Microsoft.Data.Entity.Storage.Internal.RelationalCommandBuilderFactory).FullName,
typeof(Microsoft.Data.Entity.Storage.Internal.SqlServerConnection).FullName
};
public static readonly Microsoft.Extensions.Logging.LoggerFactory _loggerFactory =
new LoggerFactory(new[] {
new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
});
optionsBuilder.UseLoggerFactory(_loggerFactory);