请解释让EventStoreRepository.GetById在聚合不存在的情况下创建新流的原因。这种行为似乎赋予了GetById双重责任,在我的情况下,这可能会导致不希望看到的结果。例如,我的聚合总是为它们的创建实现一个工厂方法,以便它们的第一个事件导致设置聚合的Id。如果一个命令是在聚合存在之前处理的,那么它可能会成功,即使聚合没有设置它的Id或初始化其他状态(crash-n-burn with null reference exception的可能性也是一样的)。
如果不存在聚合以防止过早创建和命令处理,我更希望GetById抛出异常。
发布于 2011-09-19 19:38:02
对我来说,这是一个愚蠢的设计决定。我在这个问题上反反复复。老实说,我还在犹豫。
问题是,异常应该真正用于指示异常或意想不到的情况。问题是找不到的流可能是常见的操作,甚至在某些方面是预期的操作。我修改了抛出异常、返回null或返回空流的想法。
确定聚合是否为空的方法是检查Revision属性,看看它是否为零。
https://stackoverflow.com/questions/7417086
复制相似问题