2009-05-16 13 views
2

私はEntity Frameworkを使用しています。私は多対多の関係を持っています記事< - >カテゴリ。各記事は多くのカテゴリに属する​​ことができ、各カテゴリは複数の記事に属することができます。私は、各カテゴリ内の記事の数を取得することができます。エンティティフレームワーク:多対多および合計

public IEnumerable<MenuCategory> GetMenuCategories() 
{ 
    return (from c in db.CategorySet.Include("Articles") 
    orderby c.CategoryName 
    select new MenuCategory 
    { 
     CategoryID = c.CategoryID, 
     CategoryName = c.CategoryName, 
     CountOfCategory = c.Articles.Count() 
     }); 

} 

しかし、私はまた、私は、各カテゴリにある記事の何パーセントを計算することができるように記事の合計数を取得する必要があります。誰も私に、コードを上記のコードを拡張し、データベースへの別の呼び出しを行わずに行う方法を教えてもらえますか?

ありがとうございます。

答えて

0

コードは、これを行うために記事の総数を知る必要があります。

2回目のデータベース呼び出しを避けたい場合は、データベースでcalcを実行し、結果セットの余分な列として返すことができます。これを達成するにはさまざまな方法がありますが、ビューを使用してSQL関数TotalArticlesを使用すると、計算結果はarticleCount/TotalArticlesになります。私はエンティティフレームワークについてあまり知らないので、これが実行可能かどうかわかりません。

データベースでcalcを実行できない場合は、2番目のデータベース呼び出しは避けられないと考えられますが、記事の数だけではほとんどオーバーヘッドがほとんどありません。あなたはメインコールの前にこの呼び出しを行い、上記と同様の方法で結果に値を追加することができます。PercentageOfArticles = c.Articles.Count()/articleCount

+0

私はdbからCountを取得して追加のプロパティに結果を適用するメソッドを追加しました私のMenuCategoryオブジェクトの。どちらの値もASP.NET MVCビューで使用できるので、タグクラウドを作成できます。それは2 dbコールをもたらしますが、私は実際にdbに計算を入れないようにしたいと思います。 –

+0

okだから、これは本質的に私が提出した2つのオプションの後者です –

関連する問題