1

我有以下型号

public class SummaryModel
{
    public int CompanyCount { get; set; }
    public int GroupCount { get; set; }
    public int ProjectCount { get; set; }
    public int ResourcesCount { get; set; }
    public int PeopleCount { get; set; }
}

我想使用 linq 查询我的数据库并从多个表返回记录计数并填充此模型对象。

这就是我的做法:

        using (var ctx = new WeWorkModel.weWorkEntities())
        {
            var summary = new SummaryModel()
                {
                    CompanyCount = ctx.Companies.Count(),
                    PeopleCount = ctx.People.Count(),
                    GroupCount = ctx.Groups.Count(),
                    ProjectCount = ctx.Projects.Count(),
                    ResourcesCount = ctx.Resources.Count()
                };

        }

这是最有效的方法吗?

4

2 回答 2

1

是的,这是最有效的方法 - 相当于编写 sql 查询,因为它不会获取对象,而只会在服务器上进行计数。所以像这样(使用分析器跟踪查询)

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[Company] AS [Extent1]
)  AS [GroupBy1]
于 2014-06-10T20:44:52.897 回答
0

您是否需要将此模型存储在数据库中或在实例化后更改它的值?如果不是,为什么不将此代码块放在无参数构造函数中,并将字段标记为只读,以避免以不同于预期的方式使用此模型。如果您稍后发现您需要更好地控制字段的初始化,只需添加另一个构造函数来处理该特定情况。对于主要问题,我认为您的处理方式没有什么特别低效的。虽然,使用代码几乎总是有更简洁或更有效的方式来处理任何场景。

于 2013-04-03T00:17:42.423 回答