2012-05-29 2 views
2

У меня действительно странный сценарий, где я пытаюсь хранить события домена (я одновременно изучаю CQRS и RavenDB). Основная структура документов я стараюсь магазин:RavenDB не задает все свойства на складе

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

Учитывая, что я хочу, чтобы хранить DomainEventA и DomainEventB в той же коллекции в 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.

Я действительно не могу опустить голову вокруг этого.

EDIT 1: Я могу добавить, что в сценарии сбоя метаданные сохраненного объекта говорят, что это один тип, но свойства для этого типа не сохраняются.

ответ

3

Я планировал удалить или проголосовать за закрытие, но я думаю, что более чем у меня может возникнуть эта проблема в какой-то момент. Я нашел решение в моем случае, и было то, что объекты, которые я добавил в RavenDB, имели ошибочный метод equals, поэтому RavenDB считал, что все мои объекты были одинаковыми. Когда я добавил еще одно свойство для проверки метода equals, все начинает работать как ожидалось.

+0

Обратите внимание, что этот ответ помог мне косвенно найти проблему в моем коде. –