首页 > 解决方案 > EF Core 逻辑查询

问题描述

我有使用 EF Core 和 MVC 的 C# 项目。

我有一个代表“虚拟”实体的控制器。该实体是通过从两个不同的表中选择来创建的,按月和年汇总每个表,然后连接两个结果。

我的问题是:是否有可能(如果有,这是否是一个好的解决方案)用 EF Core 来计算?或者我应该只用 C# 遍历元素并按照我想要的方式聚合它们?

编辑:目前我正在做这个:

 public IEnumerable<MyTable> Get...(int month, int year)
        return _context.MyTable
           //.Include(b => b.)
           .Where(t => t.Month == month && t.Year == year)
           .GroupBy(a => a.BrokerId)
           .Select(param1 => new {
                                   BrokerId = param1.Key,
                                   TotalCommissionAmountBruto = param1.Sum(s => s.CommissionAmountBruto),
                                   TotalCommissionAmountNeto = param1.Sum(s=>s.CommissionAmountNeto)
                       });

这会引发错误,因为查询的结果未格式化为MyTable对象。我尝试为结果创建另一个视图模型,但没有成功(关于隐式转换的相同错误)

视图模型:

public class MyViewModel : DtoBase
{
    public int brokerId { get; set; }
    public int TotalCommissionAmountBruto { get; set; }
    public int TotalCommissionAmountNeto { get; set; }
}

标签: c#asp.net-coreentity-framework-core

解决方案


有很多方法可以实现这一要求。如果表之间存在父子关系,则可以使用IncludeThenInclude

您也可以使用方法运行存储过程FromSql并选择所需的数据。

您还可以使用Select扩展方法使用投影查询。

您可以参考微软提供的官方文档了解以上所有内容。


推荐阅读