RavenDB:如何修复此 Map Reduce 代码?我在期望结果的地方得到 NULL 值

RavenDB: How do I fix this Map Reduce code? I'm getting NULL values where I'm expecting Results

我有以下代码:

public class WorkOrderByUserId : AbstractMultiMapIndexCreationTask<WorkOrderByUserId.Result>
{
    public WorkOrderByUserId()
    {
        this.AddMap<WorkOrder>(items
            => from item in items
                select new Result
                {
                    OwnerId = item.OwnerId,
                    WorkOrder = new WorkOrderLookupDto
                    {
                        Id = item.Id,
                        Name = item.EventName
                    },
                    WorkOrders = null
                });

        this.AddMap<Invoice>(items
            => from item in items
                select new Result
                {
                    OwnerId = item.WorkOrder.OwnerId,
                    WorkOrder = new WorkOrderLookupDto
                    {
                        Id = item.WorkOrder.Id,
                        Name = item.WorkOrder.EventName
                    },
                    WorkOrders = null
                });

        this.Reduce = results => from result in results
            group result by result.OwnerId
            into g
            select new Result
            {
                OwnerId = g.Key,
                WorkOrders = g.Select(x => x.WorkOrder),
                WorkOrder = null
            };

        this.Indexes.Add(x => x.OwnerId, FieldIndexing.Default);
    }

    public class Result
    {
        public string OwnerId { get; set; }

        public IEnumerable<WorkOrderLookupDto> WorkOrders { get; set; }

        public WorkOrderLookupDto WorkOrder { get; set; }
    }
}

它让我非常接近我想去的地方,但我似乎遗漏了一些东西,我正在丢失信息,我不确定为什么。

使用 Map/Reduce 可视化工具,我注意到 MAP 正在显示结果(即填充了 WorkOrders,而 WorkOrder 为空)

至此,我期望有一堆带有 NULL WorkOrders 的项目和一个有效的 WorkOrder,我希望将其减少到 WorkOrders 集合中。

当我在可视化工具中查看最终的 reduce 时,我注意到我的 WorkOrder 为 NULL,而且我的 WorkOrders 完全丢失了。

当我查看索引的最终结果时,我看到了我正在寻找的内容,只是没有我正在寻找的实际数据。

我需要更改什么才能使我的最终工单不为空?

我能够使用以下代码获得我想要的结果:

public class WorkOrderByUserId : AbstractMultiMapIndexCreationTask<WorkOrderByUserId.Result>
{
    public WorkOrderByUserId()
    {
        this.AddMap<WorkOrder>(items
            => from item in items
                select new Result
                {
                    OwnerId = item.OwnerId,
                    WorkOrders = new[]
                    {
                        new WorkOrderLookupDto
                        {
                            Id = item.Id,
                            Name = item.EventName
                        }
                    }
                });

        this.AddMap<Invoice>(items
            => from item in items
                select new Result
                {
                    OwnerId = item.WorkOrder.OwnerId,
                    WorkOrders = new[]
                    {
                        new WorkOrderLookupDto
                        {
                            Id = item.WorkOrder.Id,
                            Name = item.WorkOrder.EventName
                        }
                    }
                });

        this.Reduce = results => from result in results
            group result by result.OwnerId
            into g
            select new Result
            {
                OwnerId = g.Key,
                WorkOrders = g.SelectMany(x => x.WorkOrders)
            };

        this.Indexes.Add(x => x.OwnerId, FieldIndexing.Default);
    }

    public class Result
    {
        public string OwnerId { get; set; }

        public IEnumerable<WorkOrderLookupDto> WorkOrders { get; set; }
    }
}