6

기존 프로젝트에 NEventStore를 추가 중이며 DI를 사용하고 있습니다.DI 용 NEventStore 구성 요소의 개체

CommonDomain.Persistence.EventStore.IRepository의 인스턴스를 MVC 컨트롤러에 삽입하고 싶습니다. 이 인터페이스의 The only implementationEventStoreRepository입니다.
이 클래스는 IConstructAggregates에 따라 달라지며 only implementation I findAggregateFactory입니다.이 파일은 테스트 프로젝트에 위치하고 있으며 매우 이상한 파일 이름을 가지고 있습니다.

IRepository을 사용하지 않으시겠습니까? (공개로 표시되어 내부 코드에 의해 소비되지 않는 이유는 무엇입니까?)
집계를 조작하는 데 사용되는 hereIRepository 샘플 프로젝트를 찾고 있습니다.

또는 직접 IConstructAggregates을 구현해야합니까? 내가 같은 일에 어려움을 겪고있어

답변

3

, 나는 짧은 대답은 생각 :

스냅 샷을 사용하지 않는 경우, 테스트 프로젝트의 구현은 잘 작동합니다. 사실 스냅 샷을 받았다면 예외를 던지기위한 코드를 추가하고 싶습니다.

스냅 샷을 사용하는 경우, 당신은 여기에 설명 된 하나의 끝에 하나와 유사한 방법을 사용해야 할 것 : 기본적으로 http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

는, 문제는에서 개체 반환 거라고이다 IConstructAggregates는에 전달 된 스냅 샷 바로 다음 버전에서 시작하는 에서 이벤트 스트림을 재생합니다.

  • 스냅 샷을 지원하는 집계가있는 경우, 당신은 어쨌든 그들에 GetSnapshot()을 구현해야하고, :

    그냥 추측하지만이 이유는 "공식적으로"CommonDomain에서 구현하지 않을 수 있습니다 생각 당신은 그 집계 어떻게 든 다시 수화물 수있는 IConstructAggregates 구현을 구축 할 것 (어쩌면 ISupportSnapshots 인터페이스를?)

  • 그것은 당신이 단지 Activator.CreateInstance<T>()보다는 당신의 집계를 구축하기 위해 DI 컨테이너를 사용하여 운영 할 수 있습니다.

여기에 테스트 프로젝트에서 AggregateFactory과 같은 논리를 사용하는 코드의 조각처럼 보이는 : - 나는 공개적으로 지원하지 않는이 클래스에 대한 이유를 발견 생각 http://pastebin.com/cFESMiTz

+0

을 : 그것은 불완전하고 제대로 테스트되지 않은 것 같습니다. 이 저장소와 관련된 다양한 문제가 있으며 이미 버그보고를 제출했습니다. https://github.com/NEventStore/NEventStore/issues/376 – trailmax

+0

아니요, 스냅 샷이 없지만 생각합니다. 어쨌든이 클래스를 사용하지 않으려면 중요한 문제에 걸림돌이되어서 - ( – trailmax

+0

) geteventstore.com 같은 것을 사용하고 CommonDomain 프로젝트의 수정 된 버전을 사용하게 될 것입니다. 내 상황에 맞게 약간의 조정이 필요합니다. –