C# 从.NET core中的IQueryable获取Sqlite SQL语句

C# 从.NET core中的IQueryable获取Sqlite SQL语句,c#,sqlite,ef-core-2.0,ef-core-2.1,ef-core-2.2,C#,Sqlite,Ef Core 2.0,Ef Core 2.1,Ef Core 2.2,我的.NET核心控制台应用程序连接到sqlite db <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0-preview4.19176.6" /> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connectionString = "Data

我的.NET核心控制台应用程序连接到sqlite db

<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0-preview4.19176.6" />

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
   string connectionString = "Data Source=\\mydb.db;";
   optionsBuilder.UseSqlite(connectionString);
}

var q = dbc.mytable.Select(x => x);

配置时受保护的覆盖无效(DBContextOptions Builder Options Builder){
字符串连接字符串=“数据源=\\mydb.db;”;
optionsBuilder.UseSqlite(connectionString);
}
var q=dbc.mytable.Select(x=>x);
如何获取q使用的底层SQL查询

如果我尝试
q.ToString()
我会得到:

“Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[MyProj.mytable]”


有什么帮助吗?

假设您的IQueryable实例与您的示例相同:

var q = dbc.mytable.Select(x => x);  // your sample IQueryable object
对于EF Core之前的EntityFramework版本,这是可行的

var sqlQuery = ((System.Data.Objects.ObjectQuery)q).ToTraceString();
var sqlQuery = ((System.Data.Entity.Core.Objects.ObjectQuery)q).ToTraceString();
对于EF 6来说,这是可行的

var sqlQuery = ((System.Data.Objects.ObjectQuery)q).ToTraceString();
var sqlQuery = ((System.Data.Entity.Core.Objects.ObjectQuery)q).ToTraceString();
很抱歉,我没有看你前面提到EF core的问题标签


在这种情况下,我找到了一篇文章,它提供了很少的选项来实现使用EF Core的目标。

我得到“名称空间'System.Data'中不存在类型或名称空间名称'Entity'”编辑了我的答案,并添加了一篇我认为与EF Core场景相关的文章的链接。请试一试。