【问题标题】:RavenDB does not set all the properties on storeRavenDB 没有设置存储的所有属性
【发布时间】:2012-05-30 15:38:57
【问题描述】:

我有一个非常奇怪的场景,我尝试存储域事件(我正在尝试同时学习 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: 我可以补充一点,在失败的情况下,存储对象的元数据表明它是一种类型,但该类型的属性未存储。

【问题讨论】:

    标签: ravendb


    【解决方案1】:

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

    【讨论】:

    • 请保留,这个答案帮助我间接找到了代码中的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多