我正在尝试对 Raven 查询中的子集合进行计数。它返回的计数为 0。如果我直接在对象上使用相同的 LINQ,那么它的计数为 2。
这个查询是否可以在 Raven 上使用自动索引?如果我需要创建一个 map-reduce 索引,有人可以帮我吗?
[TestMethod]
public void CalculateUserClickCount()
{
var db = new EmbeddableDocumentStore { RunInMemory = true };
db.Initialize();
using (var session = db.OpenSession())
{
var user = new User();
var product = new Product();
product.Clicks.Add(new Click());
product.Clicks.Add(new Click());
user.Storefront.EndoProducts.Add(product);
session.Store(user);
session.SaveChanges();
var users = session.Query<User>()
.Customize(t => t.WaitForNonStaleResults())
.Select(t => new
{
StoreFrontId = t.Storefront.StorefrontID,
itemCount = t.Storefront.EndoProducts.Count,
updateDate = t.Storefront.LastUpdateDate,
clickCount = t.Storefront.EndoProducts.Sum(r => r.Clicks.Count), // this is improperly set to 0
TotalAffiliateRevenue = t.Storefront.SaleReports.Sum(r => r.TotalAffiliateEarnings) // this works
})
.ToList();
int clickCount = user.Storefront.EndoProducts.Sum(t => t.Clicks.Count); // this is properly set to 2
Assert.AreEqual(2, users[0].clickCount);
}
}