2015-03-24 57 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(),但它被证明是更困难比我预期的...我并不需要那么多,我一直能够提出同样好的替代方式来塑造我的观点​​)