C# 从.NET core中的IQueryable获取Sqlite SQL语句
我的.NET核心控制台应用程序连接到sqlite dbC# 从.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
<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场景相关的文章的链接。请试一试。