MongoDB Неизвестное значение дискриминатора

Я добавил код в ответ на этот вопрос: Неизвестное значение дискриминатора "MyEvent", но это не помогло.

Произошла ошибка при десериализации свойства Body класса EventStore.EventMessage: Неизвестное значение дискриминатора: «Вставить имя события». Ошибка возникает только при попытке восстановить сохраненный объект после перезапуска программы.

Запуск последней сборки MyGet

Образец репозитория: https://github.com/tonyeung/EventStore-MongoDB

Чтобы воспроизвести проблему:

запустите программу
нажмите c, чтобы создать новую запись
нажмите q, чтобы выйти
запустите программу еще раз
, но нажмите r, чтобы сбросить триггеры ошибок

Если вы запустите программу, нажмете c, нажмите Enter, чтобы продолжить, и нажмите r, чтобы регидратировать без выхода, объект регидратируется без проблем. WAT?

        using (var eventStore = WireupEventStore())
        {
            var snapshot = eventStore.Advanced.GetSnapshot(ID, int.MaxValue);
            if (snapshot == null)
            {
                // ERRORS HERE
                using (var stream = eventStore.OpenStream(ID, 0, int.MaxValue))
                {
                    var events = from s in stream.CommittedEvents
                                 select s.Body as IEvent;

                    obj.LoadsFromHistory(events);
                }
            }
        }

проблема с github: https://github.com/NEventStore/NEventStore/issues/203


person ton.yeung    schedule 01.07.2013    source источник


Ответы (1)


Я понял это, поскольку я использовал интерфейс в качестве маркера для своих событий, мне пришлось изменить запрос из вопроса SO с

        var types = Assembly.GetAssembly(typeof(SimpleCQRS.Event))
                .GetTypes()
                .Where(type => type.IsSubclassOf(typeof(SimpleCQRS.Event)));

to

        var type = typeof(IEvent);
        var types = Assembly.GetAssembly(typeof(IEvent))
                .GetTypes()
                .Where(t => type.IsAssignableFrom(t))
                .Where(t => t.IsClass);
person ton.yeung    schedule 02.07.2013