RavenDB不会在商店中设置所有属性

时间:2012-05-29 19:15:31

标签: ravendb

我有一个非常奇怪的场景,我尝试存储域事件(我正在尝试同时学习CQRS和RavenDB)。我试图存储的文件的基本结构是:

public interface IDomainEvent { ... }    
public abstract class BaseDomainEvent : IDomainEvent { ... }
public class DomainEventA : BaseDomainEvent { ... }
public class DomainEventB : BaseDomainEvent { ... }

鉴于我想将DomainEventADomainEventB存储在RavenDB中的同一个集合中,我已设法这样做了。但问题是在集合中我缺少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:我可以补充一点,在失败的情况下,存储对象的元数据表明它是一种类型,但不存储该类型的属性。

1 个答案:

答案 0 :(得分:3)

我计划删除或投票结束但我认为在某些方面我可能会遇到这个问题。我在我的案例中找到了解决方案,我添加到RavenDB的对象有一个错误的equals方法,所以RavenDB认为我的所有对象都是同一个。当我添加一个属性来检查equals方法时,一切都按预期开始工作。