Я использую ядро EF в качестве ORM, на котором мои события ES воспроизводятся для стороны чтения моего приложения CQRS.
Я создал новую функцию, которая требует некоторой модификации проекций, и какони представлены.Я хочу отбросить текущую модель чтения и перепроектировать поток, чтобы перестроить модель.
Производительность была низкой, так как каждый раз, когда я создаю новый контекст, и сохраняю его, повторяя события;
foreach (var event in events)
{
using (var scope = _container.BeginScope('projection-scope'))
using (var dbContext = scope.Resolve<MyDbContext>())
{
await scope.Resolve<IMediator>().Publish(event);
await context.SaveChangesAsync();
}
}
Я использую DI-контейнеры для предотвращения вызова персистентности из обработчика в попытке пакетирования проекций и повышения производительности, но я сталкиваюсь с растущими трудностями, связанными сущностями, связями и другимиПроблемы с SQL.
Является ли это разумной стратегией для объединения нескольких операций в контексте EF или лучше отказаться от ORM и перейти к подходу прямого SQL (возможно, с использованием dapper)?