如何查看LINQ生成的原始查询?

y0u0uwnf  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(105)

我要查看生成的sql来调试Console.WriteLine();在Visual studio Code中,用Console.WriteLine(),我看不到原始查询;

var result = from employee in db.EmployeeUsers
                        ...
             select employee.id..;
     string sql = result.ToString();

 Console.WriteLine(sql);

但它显示成这样

Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[<>f__AnonymousType1641]

我怎么能看到这样的原始查询呢?

[SELECT employee.id FROM ... WHERE...;]

我先设置这个,

"Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
     ,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
    }
  },

但我没发现我的设置是否有误。然后我设置了

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder.LogTo(Console.WriteLine);

但它显示了每个原始查询。
我只是希望Query只打印在我在VisualStudioCodeTerminal中指定的部分。

mm9b1k5b

mm9b1k5b1#

显然你可以调用.ToQueryString()或者使用Query属性。
https://stackoverflow.com/a/68797954/1974021

var result = from employee in db.EmployeeUsers
                    ...
         select employee.id..;
string sql = result.ToQueryString();

相关问题