Ravendb LoadDocument显示NULL值

时间:2014-06-13 07:21:22

标签: ravendb

我在RavenDB中有两个集合。请帮我创建从两个集合中获取数据的索引。

public class Ticket
{
   public string TicketID{get;set;}
   public double Total{get;set;}
}

public class ImportTiming
{
   public string Id{get;set;}
   public DateTime ExtractTime{get;set;}
}

AND

public class ResultClass
   {
      public string TicketID{get;set;}
      public double Total{get;set;}
      public DateTime ExtractTime{get;set;}
   }

TicketID(Ticket)& Id(ImportTiming)是相同的。我正在使用LoadDocument for ExtractTime但它显示的是NULL值。

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案...... Bellow是Map-Reduce函数,我在其中使用了LoadDocument<>用于从ImportTiming文档中选择数据。

public class IdxJoinBetweenCollections : AbstractIndexCreationTask<Ticket,JoinBetweenCollections.ResultClass>
    {
        public IdxJoinBetweenCollections()
        {
            Map = docs => from doc in docs
                         let TimeDoc = LoadDocument<ImportTiming>("ImportTiming/" + doc.TicketID)
                          select new
                          {
                              ID = doc.TicketID,
                              Total = doc.Total,   
                              ExtractTime = TimeDoc.ExtractComplete,
                          };
            Reduce = results => from res in results
                                group res by res.ID into g
                                select new
                                {
                                    ID = g.Key, 
                                    Total = g.Select(x => x.Total).FirstOrDefault(),                                                                       
                                    ExtractTime = g.Select(x => x.ExtractTime).FirstOrDefault(),

                                };
        }
    }

在LoadDocument(&#34; ImportTiming /&#34; + doc.TicketID)中,我使用了CollectionName后跟Id,这样我就可以获得整个文档。如果我不使用CollectionName,那么它会显示NULL值。 参考:http://ravendb.net/docs/2.0/client-api/querying/static-indexes/indexing-related-documents