【问题标题】:Entity Framework: Many To Many Count and Sum实体框架:多对多计数和求和
【发布时间】:2009-05-16 07:19:39
【问题描述】:

我正在使用实体框架。我有一个多对多的关系文章 类别。每篇文章可以属于多个分类,每个分类可以属于多篇文章。我可以得到每个类别中的文章 COUNT:

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()
      });

}

但我还需要获取文章总数,以便计算每个类别中文章的百分比。谁能告诉我如何通过扩展上面的代码而不单独调用数据库来做到这一点?

谢谢

【问题讨论】:

    标签: c# entity-framework linq-to-entities


    【解决方案1】:

    代码需要知道文章的总数才能做到这一点。

    如果您想避免第二次数据库调用,那么您可以在数据库中进行计算并将其作为结果集中的额外列返回。有不同的方法可以实现这一点,但一种是使用视图并具有 SQL 函数 TotalArticles,然后您的计算就是 articleCount / TotalArticles。我对实体框架了解不多,所以我不确定这是否可行。

    如果您不能在数据库中进行计算,那么我想第二次数据库调用是不可避免的,尽管它只是文章的计数,​​因此几乎不会增加太多开销。您可以在主调用之前进行此调用,然后以与上述类似的方式将值添加到结果中,即PercentageOfArticles = c.Articles.Count() / articleCount

    【讨论】:

    • 我添加了一个方法来从数据库中获取计数,然后将结果应用于我的 MenuCategory 对象的一个​​额外属性。这两个值都在我的 ASP.NET MVC 视图中可用,因此我可以创建标签云。它会导致 2 个 db 调用,但我真的想避免将计算放在 db 中。
    • 好的,这基本上是我提出的两个选项中的后者
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多