我不知道我正确理解你的问题 - 但我会在它无论如何采取刺伤:)
所以 - 我的理解是,你有一个聚合根发射UserCreated
和UserInactive
,和你想要维护两个视图:ActiveUsersView
和InactiveUsersView
,每个视图分别包含每个活动和非活动用户的视图实例。
由于目前并没有办法删除视图实例与Cirqus(*),我建议你改变你的看法是一个UserActivityStatusView
insted的,只是轻弹每个事件BOOL - 是这样的:
public class UserActivityStatusView :
IViewInstance<InstancePerAggregateRootLocator>,
ISubscribeTo<UserCreated>,
ISubscribeTo<UserInactive>
{
//...
public bool Active { get; set; }
public void Handle(IViewContext c, UserCreated e) {
Active = true;
}
public void Handle(IViewContext c, UserInactive e) {
Active = false;
}
}
然后,在您的应用程序中,您只需确保使用正确的标准查询视图。
这有道理吗?
(PS:我的答案迟到道歉,你的问题:))
(*其实我intented允许调用viewContext.MarkForDeletion()
,但它被证明是更困难比我预期的...我并不需要那么多,我一直能够提出同样好的替代方式来塑造我的观点)