2011-08-12 2 views
2

ServiceStack을 사용할 때 EventMessage.Body가 원래 객체로 역 직렬화되지 않습니다. 대신 EventMessage.Body는 JSON 문자열입니다. 오프 EventStore.Serialization.ServiceStack JOliver의 EventStore : ServiceStack serializer를 사용할 때 이벤트를 읽을 수 없습니다.

  • 을 설정하려면 프로젝트 참조와 EventStore.Serialization.Json 참조를 교체

    1. 열고 EventStore 프로젝트를하고 EventStore.Example 프로젝트
    2. 로 이동합니다

      재현하려면 어셈블리를 사용하여 EventStore에 서명하십시오. 예제 프로젝트

    3. MainProgram.WireupEventStore를 .UsingServiceStackJsonSerialization()으로 변경하십시오.
    4. 다음을 추가하십시오 MainProgram.Main()의 끝 부분에 코드 :

    -

    var stream = store.OpenStream(StreamId, 0, int.MaxValue); 
    var myFirstEvent = (SomeDomainEvent) (stream.CommittedEvents.First().Body); 
    Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value); 
    
  • 답변

    1
    는 문자열이 있다면

    당신은 당신이 즉 ServiceStack의 FromJson 확장 방법, 사용할 수 SomeDomainEvent 기다리고있어 :

    var myFirstEvent = stream.CommittedEvents.First().Body.FromJson<SomeDomainEvent>(); 
    Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value); 
    
    +0

    이 솔루션을 사용하면 이벤트를 deserialize하여 결국 Newton에서 ServiceStack으로 전환 할 경우의 성능상의 이점을 거의 부정 할 수 있습니다. 이것이 EventStore/ServiceStack 플러그인의 버그라고 생각하거나 잘못 사용하고 있습니다. 나는 당신의 대답을 upvoted했지만 대답하지 않은 질문을 남겼습니다. –

    관련 문제