Из прочтения многих других постов мне кажется, что мне нужно использовать
context.DbSet<Table>.RemoveRange(…);
context.SaveChanges();
для эффективного удаления нескольких сущностей.
К сожалению, в моем сценарии это все еще занимает слишком много времени,В тестах даже удаление 5 объектов с примерно 10 полями занимает около 1 секунды на объект. Это слишком медленно.
Кто-нибудь может предложить что-нибудь еще, что я могу сделать для улучшения производительности?
Заранее благодарен за любую помощь.
РЕДАКТИРОВАТЬ
Вот как выглядит метод, который работает:
public void RemoveClassReportGroupings(IEnumerable<(int clientClassId, int classReportGroupingId)> enumerable)
{
List<Class_ReportGrouping> removeItems = new List<Class_ReportGrouping>();
var dict = _context.ClassReportGroupings.Select(i => i).ToDictionary(i=> (i.ClassId, i.GroupingId));
foreach (var item in enumerable)
{
var removeItem = dict[(item.clientClassId ,item.classReportGroupingId)];
removeItems.Add(removeItem);
}
_context.ClassReportGroupings.RemoveRange(removeItems);
}