Ничто из этого не относится к EF Core.

ьзуя EF Core (или любой другой ORM), я хочу отслеживать количество запросов, которые ORM делает к базе данных во время какой-либо операции в моем программном обеспечении.

Ранее я использовал SQLAlchemy под Python, и в этом стеке его очень легко настроить. У меня обычно есть модульные тесты, которые утверждают количество запросов, сделанных для сценария, к базе данных SQLite в памяти.

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

В моем коде настройки теста я делаю так, как написано в документации:

using (var db = new BloggingContext())
{
    var serviceProvider = db.GetInfrastructure<IServiceProvider>();
    var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
    loggerFactory.AddProvider(new MyLoggerProvider());
}

Но я сталкиваюсь с проблемами, которые, как я подозреваю, являются результатом следующего (также из документов):

Вам нужно только зарегистрировать регистратор с одним экземпляром контекста. Как только вы зарегистрируете его, он будет использоваться для всех других экземпляров контекста в том же домене приложений.

Проблемы, которые я вижу в моих тестах, указывают на то, что моя реализация логгера является общей для нескольких контекстов (это соответствует документам, которые я прочитал). А так как а) мой тестовый прогон запускает тесты в параллели и б) весь мой набор тестов создает сотни контекстов БД - он работает не очень хорошо.

Вопрос / вопросы:

Возможно ли то, что я хочу?То есть я могу зарегистрировать регистратор с контекстом базы данных, который используется только для этого экземпляра контекста базы данных?Есть ли другие способы достичь того, что я пытаюсь сделать?

Ответы на вопрос(3)

Ваш ответ на вопрос