首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NEventStore CommonDomain:当聚合不存在时,为什么EventStoreRepository.GetById要打开一个新的流?

NEventStore CommonDomain:当聚合不存在时,为什么EventStoreRepository.GetById要打开一个新的流?
EN

Stack Overflow用户
提问于 2011-09-14 21:27:09
回答 1查看 335关注 0票数 1

请解释让EventStoreRepository.GetById在聚合不存在的情况下创建新流的原因。这种行为似乎赋予了GetById双重责任,在我的情况下,这可能会导致不希望看到的结果。例如,我的聚合总是为它们的创建实现一个工厂方法,以便它们的第一个事件导致设置聚合的Id。如果一个命令是在聚合存在之前处理的,那么它可能会成功,即使聚合没有设置它的Id或初始化其他状态(crash-n-burn with null reference exception的可能性也是一样的)。

如果不存在聚合以防止过早创建和命令处理,我更希望GetById抛出异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-19 19:38:02

对我来说,这是一个愚蠢的设计决定。我在这个问题上反反复复。老实说,我还在犹豫。

问题是,异常应该真正用于指示异常或意想不到的情况。问题是找不到的流可能是常见的操作,甚至在某些方面是预期的操作。我修改了抛出异常、返回null或返回空流的想法。

确定聚合是否为空的方法是检查Revision属性,看看它是否为零。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7417086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档