我有一个名为的域对象Campaign
,其中包含一些字符串属性和一组TrackingEntry
对象。每当我从文档会话中检索查询时,此属性为空,即使我至少保存了一个跟踪条目。如何检索活动对象以便同时检索跟踪条目集合?以下是相关代码Campaign
:
public class Campaign : Entity
{
private ICollection<TrackingEntry> trackingEntries;
public string BrandId { get; set; }
public ICollection<TrackingEntry> TrackingEntries
{
get { return trackingEntries ?? (trackingEntries = new Collection<TrackingEntry>()); }
}
}
有问题的方法采用逗号分隔的品牌 ID 字符串,检索具有这些品牌 ID 的所有活动,循环并根据跟踪条目集合的内容执行一些自定义逻辑,等等。以下是相关部分:
var brandIds = input.Split(',');
var campaigns = session.Query<Campaign>().Where(x => x.BrandId.In(brandIds));
foreach (var campaign in campaigns)
{
DateTime? dateClaimed = null;
var trackingEntry = campaign.TrackingEntries.FirstOrDefault(x => x.ConsumerId == consumer.Id);
if (trackingEntry != null)
{
dateClaimed = trackingEntry.CreatedOn;
}
}
我知道有一个跟踪条目,但设置断点会显示一个空集合。我认为这可能是乌鸦缓存和过时的索引,但在将记录写入数据库后 24 小时,问题仍然存在。我在想我可能需要一个 map-reduce 索引来处理该集合,但对它们的工作方式仍然很模糊。想法?