2015-03-24 75 views
2

我想知道是否有任何方法從視圖中刪除條目。從視圖中刪除條目

例如:你有用戶聚合根包含Active屬性

當發出的UserCreated情況下,用戶Active屬性設置爲true 和ActiveUserView被susbcribed它,所以用戶出現在視圖中。

現在UserInactive是針對同一個聚合根ID發出的,InactiveUsersView是訂閱的,但是這個AG仍然在ActiveUsersView中,我該如何刪除它?或者我做錯了什麼?

編輯:我知道我可以做一個解決方法,並使用聚合根ID手動刪除它,但不是一個美麗的解決方案。

回答

1

我不知道我正確理解你的問題 - 但我會在它無論如何採取刺傷:)

所以 - 我的理解是,你有一個聚合根發射UserCreatedUserInactive,和你想要維護兩個視圖:ActiveUsersViewInactiveUsersView,每個視圖分別包含每個活動和非活動用戶的視圖實例。

由於目前並沒有辦法刪除視圖實例與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(),但它被證明是更困難比我預期的...我並不需要那麼多,我一直能夠提出同樣好的替代方式來塑造我的觀點​​)