Asp.Net MVC 5 を使用して Web サイトを作成しています。
オンラインストアを持っているとします。各商品にレビューがあります。各アイテムの平均評価をユーザーに表示したいと考えています。何かのようなもの:
var average = items.Reviews.Average(i => i.Rating);
ただし、ユーザーがアイテムを検索するたびにこの平均を計算するのは、お勧めできません。そこで、どういうわけかこの値をキャッシュすることにしました。私の最初の考えは、プロパティを作成し、テーブルを更新するたびに更新することです。
public virtual IList<Review> Reviews { get; set; }
[ScaffoldColumn(false)]
public double AverageRating { get; set; }
およびコントローラー内(作成用):
item.AverageRating = (item.AverageRating * item.Reviews.Count + review.Rating) / (item.Reviews.Count + 1);
これは良いようですが、これを行うためのより良い方法があるかどうか疑問に思います。あるいは、毎回平均を計算するとウェブサイトのパフォーマンスが低下すると考えるのは間違っているかもしれません。