Как я могу просмотреть OData sql, сгенерированный из [EnableQuery] - PullRequest
1 голос
/ 15 марта 2020

Использование: код Visual Studio, ASP. NET Core 3.1, Microsoft.AspNetCore.OData 7.4.0-beta

Я новичок в OData и хотел бы изучить способ SQL оператор, сгенерированный из действия [EnableQuery]. У меня нет профилировщика базы данных, и я не могу легко увидеть варианты входа или перехвата SQL. Я хочу, чтобы это гарантировало, что запросы OData, такие как / api / people (30)? $ Select = name, title , просто выбирают столбцы name и title вместо всех столбцов при выполнении. По мере того как все усложняется, мне кажется, что непреднамеренно материализовать запрос преждевременно. Или в любом случае я просто хочу увидеть SQL. Мне нравится, как Entity Framework Core может подключиться к журналу ASP. NET. Не могу найти такую ​​вещь для OData. Спасибо.

1 Ответ

0 голосов
/ 28 марта 2020

Хороший подход заключается в назначении Logger на DbContextOptions во время инициализации. Следующий пример выведет сгенерированный код SQL на консоль.

public void ConfigureServices(IServiceCollection services)
{
    ILoggerFactory dbLoggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); });

    services.AddDbContext<ApplicationDbContext>(
        options =>
        {
            options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))
                .UseLoggerFactory(dbLoggerFactory);
        }
    );

    //... other services configuration...
}

Тогда запрос лиц? $ Select = id, name выведет что-то похожее на:

enter image description here

...