林克集团 通过不采取内部实体

本文关键字:内部 实体 林克 | 更新日期: 2023-09-27 18:34:24

我正在使用实体框架并在表格上做一个组。我的查询如下:-

var brokerPaymentLists = dbContext.BrokerPayments
    .Include("PaymentDetail")
    .Where(bp => bp.IdPaymentStatus == (long)EntityModel.Additions.Variables.PaymentStatus.ALLOTED)
    .GroupBy(bp => bp.IdBroker,
    (key, g) => new
    {
        IdBroker = key.Value,
        BrokerPayments = g.ToList()
    }).ToList();

我已经包含了付款详细信息,但是在分组后,我可以看到代理付款中每个项目的付款详细信息为空。任何建议为什么会这样,以及我如何通过这样做小组,这样我就可以我的付款详细信息坚持每个经纪人付款;

林克集团 通过不采取内部实体

使用 Include 急切加载需要自应用Include以来不更改数据的形状。在您的情况下,这意味着查询必须返回IQueryable<BrokerPayments> 。但是GroupBy运算符会更改形状,因为它返回IQueryable<IGrouping<TKey, TSource>> 。投影和自定义联接也会发生同样的情况。

作为解决方法,您可以在 LINQ to Objects 中执行分组,如下所示:

var brokerPaymentLists = dbContext.BrokerPayments
    .Include("PaymentDetail")
    .Where(bp => bp.IdPaymentStatus == (long)EntityModel.Additions.Variables.PaymentStatus.ALLOTED)
    .AsEnumerable()
    .GroupBy(bp => bp.IdBroker,
    (key, g) => new
    {
        IdBroker = key.Value,
        BrokerPayments = g
    });

注意:请注意,查询执行不会被推迟