У меня проблемы с производительностью при использовании метода сумм в структуре сущностей.Чтобы объяснить это лучше, это моя структура таблицы:
+----+--------+---------+-------+ +-----------+-----------+-------+
| Id | Name | Company | Color | | ArticleId | Purchaser | Price |
+----+--------+---------+-------+ +-----------+-----------+-------+
| 1 | iPhone | Apple | Black | | 1 | Bob | 350 |
| 2 | iPad | Apple | Grey | | 1 | Mat | 220 |
+----+--------+---------+-------+ | 2 | Ivy | 450 |
+-----------+-----------+-------+
Это связанная модель для таблицы Article:
public int Id { get; set; }
public string Name { get; set; }
...
[NotMapped]
public decimal? TotalAmount { get; set; }
public virtual ICollection<Purchase> PurchaserList { get; set; }
Используя ленивую загрузку, Entity Framework будет автоматическизагрузить всех связанных покупателей.Затем я просто суммирую цену для каждой статьи и устанавливаю ее равной свойству TotalAmount:
articleList = dbContext.Article.Where(x => x.CompanyId == 10).ToList();
foreach(var article in articleListe)
article.TotalAmount= article.PurchaserList.Sum(x => x.Price);
Однако для таблицы с 100 записями это занимает около 4 секунд.Конечно, это слишком медленно, и мне нужно немного его ускорить.У кого-нибудь есть какие-либо предложения или что-нибудь, что я могу улучшить, чтобы сделать это быстрее?
Редактировать:
Как уже упоминалось в rad, изменить его с ленивой загрузки на страстнуюзагрузка улучшила время загрузки с 4 секунд до 0,17 секунд.Я удалил виртуальную клавиатуру и изменил свой код следующим образом:
articleList = dbContext.Article.Where(x => x.CompanyId == 10).Include(x => x.PurchaserList).ToList();