2

ドメインイベントを保存しようとする非常に奇妙なシナリオがあります(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このRavenDBコードを使用している.CQRS/blob / ravenfail / TJ.CQRS.RavenEvent.Tests / RavenEventStoreTests.cs : https ://github.com/mastoj/TJ.CQRS/blob/ravenfail/TJ.CQRS.RavenEvent/RavenEventStore .cs

私は本当にこれに頭を悩ませることができません。

編集1:失敗したシナリオでは、保存されたオブジェクトのメタデータはそれが1つのタイプであると言っていますが、そのタイプのプロパティは保存されていません。

4

1 に答える 1

3

削除するか、投票する予定でしたが、ある時点でこの問題が発生する可能性があると思います。私の場合、解決策を見つけました。RavenDBに追加したオブジェクトのequalsメソッドに欠陥があるため、RavenDBはすべてのオブジェクトが同じものであると考えました。equalsメソッドをチェックインするためにもう1つのプロパティを追加すると、すべてが期待どおりに機能し始めます。

于 2012-05-30T07:38:57.303 に答える