Получить SQL-оператор Sqlite из IQueryable в ядре .NET - PullRequest
0 голосов
/ 03 мая 2019

мое консольное приложение .NET Core подключается к 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);

Как я могу получить базовый SQL-запрос, используемый q?

Если я попытаюсь q.ToString(), я получу:

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

Любая помощь?

1 Ответ

1 голос
/ 03 мая 2019

Предположим, ваш экземпляр IQueryable соответствует вашему примеру:

var q = dbc.mytable.Select(x => x);  // your sample IQueryable object

Для версий EntityFramework до EF Core это сработало бы

var sqlQuery = ((System.Data.Objects.ObjectQuery)q).ToTraceString();

и для EF 6 это сработало бы

var sqlQuery = ((System.Data.Entity.Core.Objects.ObjectQuery)q).ToTraceString();

Извините, что я не посмотрел теги вашего вопроса, в которых упоминается ядро ​​EF.

В этом случае я нашел эту статью , которая предоставляет несколько вариантов для достижения цели при использовании EF Core.

...