Ничто из этого не относится к 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());
}
Но я сталкиваюсь с проблемами, которые, как я подозреваю, являются результатом следующего (также из документов):
Вам нужно только зарегистрировать регистратор с одним экземпляром контекста. Как только вы зарегистрируете его, он будет использоваться для всех других экземпляров контекста в том же домене приложений.
Проблемы, которые я вижу в моих тестах, указывают на то, что моя реализация логгера является общей для нескольких контекстов (это соответствует документам, которые я прочитал). А так как а) мой тестовый прогон запускает тесты в параллели и б) весь мой набор тестов создает сотни контекстов БД - он работает не очень хорошо.
Вопрос / вопросы:
Возможно ли то, что я хочу?То есть я могу зарегистрировать регистратор с контекстом базы данных, который используется только для этого экземпляра контекста базы данных?Есть ли другие способы достичь того, что я пытаюсь сделать?