使用投影进行RavenDb变换

时间:2014-08-06 06:07:21

标签: .net ravendb

我有一个非常简单的索引,它返回一个扁平的Products结构,这就是我如何使用它:

_documentSession.Query<ProductsIndex.IndexResult, ProductsIndex>().
  Customize(x => x.WaitForNonStaleResults()).
  OrderByDescending(x => x.DateTime).
  Take(20).
  AsProjection<ProductsIndex.IndexResult>().
  ToList();

它起作用并返回20个最后结果。现在我想为这个查询添加一个转换器。这是我的尝试:

_documentSession.Query<ProductsIndex.IndexResult, ProductsIndex>().
  Customize(x => x.WaitForNonStaleResults()).
  TransformWith<ProductsTransformer, ProductsTransformer.TransformerResult>().
  OrderByDescending(x => x.DateTime).
  Take(20).
  AsProjection<ProductsTransformer.TransformerResult>().
  ToList();

所以我添加了TransformWith线并更改了AsProjection线。问题是它只返回8个文件。据我所知,它没有获得AsProjection部分并自行返回产品。

1 个答案:

答案 0 :(得分:2)

您需要使用:

_documentSession.Query<ProductsIndex.IndexResult, ProductsIndex>().
  Customize(x => x.WaitForNonStaleResults().SetAllowMultipleIndexEntriesForSameDocumentToResultTransformer(true)).
  TransformWith<ProductsTransformer, ProductsTransformer.TransformerResult>().
  OrderByDescending(x => x.DateTime).
  Take(20).

ToList();

请注意SetAllowMultipleIndexEntriesForSameDocumentToResultTransformer来电