Ravendb TransformResults显示用Load()填充的属性的空值

Ravendb TransformResults显示用Load()填充的属性的空值,ravendb,Ravendb,我有两个文档Ticket和MenuItem,我用TransformResults创建了索引,但问题是我在transform中为加载的文档获取空值 public class Ticket { public int ID { get; set; } public int ItemId { get; set; } public string ItemName { get; set; } public int Price { get

我有两个文档Ticket和MenuItem,我用TransformResults创建了索引,但问题是我在transform中为加载的文档获取空值

public class Ticket
    {
        public int ID { get; set; }
        public int ItemId { get; set; }
        public string ItemName { get; set; }
        public int Price { get; set; }
    }
    public class MenuItem
    {
        public int ID { get; set; }
        public string ItemName { get; set; }
        public string PriceCategory { get; set; }

    }
我创建了一个索引,如

public class TicketItemGross : AbstractIndexCreationTask<Ticket, TicketItemGross.TicketItemDetails>
    {
        public class TicketItemDetails
        {
            public string ID { get; set; }
            public string ItemId { get; set; }
            public string ItemName { get; set; }
            public int Price { get; set; }
            public string PriceCategory { get; set; }
        }
        public TicketItemGross()
        {
            Map = docs => from doc in docs
                          select new
                          {
                              ID = doc.ID,
                              ItemId=doc.ItemId,
                              ItemName=doc.ItemName,
                              Price=doc.Price
                          };
            TransformResults = (database, docs) => from m in docs
                                                   let d = database.Load<MenuItem>(m.ID)
                                                   select new
                                                   {
                                                       ID = m.ID,
                                                       ItemId = m.ItemId,
                                                       ItemName = m.ItemName,
                                                       Price = m.Price,
                                                       PriceCategory=d.PriceCategory
                                                   };
        }
    }
公共类TicketItemGross:AbstractIndexCreationTask
{
公共类票证详情
{
公共字符串ID{get;set;}
公共字符串ItemId{get;set;}
公共字符串ItemName{get;set;}
公共整数价格{get;set;}
公共字符串PriceCategory{get;set;}
}
公开票证
{
Map=docs=>来自文档中的文档
选择新的
{
ID=doc.ID,
ItemId=doc.ItemId,
ItemName=doc.ItemName,
价格=单据价格
};
TransformResults=(数据库,文档)=>来自文档中的m
设d=database.Load(m.ID)
选择新的
{
ID=m.ID,
ItemId=m.ItemId,
ItemName=m.ItemName,
价格=m.价格,
PriceCategory=d.PriceCategory
};
}
}
问题是当我查询数据时。对于PriceCategory,我得到null,但对于所有其他字段,我得到正确的值

这是我的疑问

IEnumerable<TicketItemGross.TicketItemDetails> list;            
            using (var session = store.OpenSession())
            {
                list = session.Query<TicketItemGross.TicketItemDetails, TicketItemGross>();                

            }
IEnumerable列表;
使用(var session=store.OpenSession())
{
list=session.Query();
}

发生这种情况是因为您使用的是整数ID。在转换中调用
database.Load
时,需要手动将其转换为字符串ID

database.Load<MenuItem>("MenuItems/" + m.ID)
database.Load(“MenuItems/”+m.ID)
如果您使用整型或guid ID,Raven会感到困惑,这是其中之一。如果使用字符串ID,则不会出现此问题

也可以考虑使用A。它们比现在已经过时的索引转换器更简单