从视图中删除条目



我想知道是否有任何方法可以从视图中删除条目。

例如:您有包含活动属性的用户聚合根

发出UserCreated事件时,User Active属性设置为true并且ActiveUserView被绑定到它,因此用户显示在视图中。

现在为相同的聚合根Id发出UserInactive,InactiveUsersView订阅了它,但这个AG仍然在ActiveUsersView中,我如何删除它?还是我做错了什么?

EDIT:我知道我可以做一个变通方法,使用聚合根Id手动删除它,但这不是一个漂亮的解决方案。

我不确定我是否正确理解你的问题,但无论如何我都会尝试一下:)

因此,我的理解是,您有一个发出UserCreatedUserInactive的聚合根,并且您希望维护两个视图:ActiveUsersViewInactiveUsersView,每个视图分别包含每个活动用户和非活动用户的视图实例。

由于目前无法使用Cirqus(*)删除视图实例,我建议您将视图更改为UserActivityStatusView指令,只需在每个事件上轻弹一个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;
    }
}

然后,在应用程序中,只需确保使用正确的条件查询视图。

这有道理吗?

(附言:我为你的问题回答得太晚而道歉:)

(*实际上我本想允许调用viewContext.MarkForDeletion(),但它比我预期的要困难……而且我并不太需要它,我一直能够想出同样好的替代方法来建模我的视图)

相关内容

  • 没有找到相关文章

最新更新