Мини-профилировщик не показывает никакой статистики по sql-запросам?

#c# #asp.net-core-3.1 #ef-core-3.1 #mvc-mini-profiler #miniprofiler

#c# #asp.net-core-3.1 #ef-core-3.1 #mvc-mini-profiler #минипрофилер

Вопрос:

Мини-профилировщик не показывает никакой статистики по sql-запросам

Я выполняю настройку в соответствии с документацией и примером приложения: https://miniprofiler.com/dotnet/HowTo/ProfileEFCore
https://github.com/MiniProfiler/dotnet/blob/main/samples/Samples .AspNetCore3/Startup.cs

вот мой Startup.cs

 public void ConfigureServices(IServiceCollection services)
{           
    services.AddDbContext<MyDbContext>(options => options.UseNpgsql ("connstring..."));
    services.AddMiniProfiler()
        .AddEntityFramework();          
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMiniProfiler();
    app.UseRouting();
    app.UseEndpoints(endpoints =>
            {
                ...
            });
}
 

и пример вызова sql-запроса

             await using (var context = scope.ServiceProvider.GetRequiredService<MyDbContext>())
            {
                var myDatas = context.Datas.AsNoTracking()                    
                    .Where(x => x.StartTime > now );

                foreach (var myData in myDatas)
                {
                ...
                }
 

после выполнения этого запроса я проверяю страницы со статистикой мини-профилировщика:

 https://localhost:port/mini-profiler-resources/results-index
https://localhost:port/mini-profiler-resources/results?id=GUID
 

и видите только это:

 |                               | duration (ms)| with children (ms) | from start (ms)
| https://localhost:port/logins/| 231.9        | 236.5              |  0.0
| MiniProfiler Init             | 4.5          | 4.6                |  0.0
| Get Profiler IDs              | 0.1          | 0.1                |  4.5
 

Что я пропустил? Почему я не вижу статистику по SQL-запросам?

Ответ №1:

Понял это. Необходимо было обернуть вызовы в базу данных, обратившись к мини-профилировщику.

пример кода из этой статьи: https://dotnetthoughts.net/using-miniprofiler-in-aspnetcore-webapi /

 using (MiniProfiler.Current.Step("PUT method"))
    {
        WeatherForecast weatherForecastById = null;
        using (MiniProfiler.Current.Step("Getting Weather Forecase for the Id"))
        {
            weatherForecastById = GetWeatherForecast(id);
        }

        if (weatherForecastById == null)
        {
            return NotFound();
        }

        if (weatherForecastById.Id != id)
        {
            return BadRequest();
        }
        using (MiniProfiler.Current.Step("Updating the Data"))
        {
            _databaseContext.Entry(weatherForecast).State = EntityState.Modified;
            _databaseContext.SaveChanges();
        }
        return NoContent();
    }