我有一个非常奇怪的场景,我尝试存储域事件(我正在尝试同时学习 CQRS 和 RavenDB)。我尝试存储的文档的基本结构是:
public interface IDomainEvent { ... }
public abstract class BaseDomainEvent : IDomainEvent { ... }
public class DomainEventA : BaseDomainEvent { ... }
public class DomainEventB : BaseDomainEvent { ... }
鉴于我想在 RavenDB 中存储DomainEventA
和存储DomainEventB
在同一个集合中,并且我已经设法做到了。但问题是,在集合中我缺少 的属性DomainEventB
,即使我在提交存储对象的事务之前检查了属性是否已设置,也不是所有属性都已设置。以下要点显示了我想要做的一个工作示例:https ://gist.github.com/2830093 ,并且在此测试中找到了失败的测试代码:https ://github.com/mastoj/TJ .CQRS/blob/ravenfail/TJ.CQRS.RavenEvent.Tests/RavenEventStoreTests.cs使用此 RavenDB 代码:https ://github.com/mastoj/TJ.CQRS/blob/ravenfail/TJ.CQRS.RavenEvent/RavenEventStore .cs。
我真的无法理解这一点。
编辑 1:我可以补充一点,在失败的场景中,存储对象的元数据说它是一种类型,但没有存储该类型的属性。