我不知道我正確理解你的問題 - 但我會在它無論如何採取刺傷:)
所以 - 我的理解是,你有一個聚合根發射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()
,但它被證明是更困難比我預期的...我並不需要那麼多,我一直能夠提出同樣好的替代方式來塑造我的觀點)