У меня есть приложения. net core 2.2, использующие базу данных SQL. Я написал несколько модульных тестов с использованием поставщика EF Core In Memory для проверки кода доступа к данным. Я хотел получить сгенерированные журналы SQL (в основном хотел знать, как генерируются операторы SQL. Я ссылался на эту статью https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/october/data-points-logging-sql-and-change-tracking-events-in-ef-core, но она не работала (не вижу никаких журналов). В конце концов я получил что-то вроде
public class TestFixture: IDisposable
{
private static readonly LoggerFactory _loggerFactory
= new LoggerFactory(new[] {
new DebugLoggerProvider((category, level) =>
level == LogLevel.Debug)
//new ConsoleLoggerProvider ((category, level) =>
// category == DbLoggerCategory.Database.Command.Name &&
// level == LogLevel.Debug, true)
});
#region Constructor(s)
public TestFixture()
{
}
#endregion
#region Public Method(s)
public MyDbContext CreateMyDbContext()
{
var options = new
DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase(
"MyDb")
.UseLoggerFactory(_loggerFactory)
.EnableSensitiveDataLogging()
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options;
return new MyDbContext(options);
}
#endregion
Теперь я получаю много журналов в окне вывода VS, что не помогает. Похоже, они являются внутренними журналами EF Core, но способны идентифицировать операторы SQL Кто-нибудь есть идеи, как получить журналы EF Core в сценарии тестирования модуля / интеграции при использовании поставщика EF Core In Memory?