MongoDB Неизвестное значение дискриминатора
Я добавил код в ответ на этот вопрос: неизвестное значение дискриминатора "MyEvent", но это не помогло.
Произошла ошибка при десериализации свойства Body класса EventStore.EventMessage: Неизвестное значение дискриминатора: "Вставить имя события". Ошибка возникает только при попытке регидрировать сохраненный объект после перезапуска программы.
Запуск последней версии MyGet
Образец репозитория: https://github.com/tonyeung/EventStore-MongoDB
Чтобы повторить проблему:
запустить программу
нажмите c, чтобы создать новую запись
нажмите q, чтобы выйти
запустите программу снова
но нажмите г для регидратации
триггеры ошибок
Если вы запустите программу, нажмите c, нажмите ввод, чтобы продолжить, и нажмите 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
1 ответ
Я понял это, так как я использовал интерфейс в качестве маркера для своих событий, мне пришлось изменить запрос с SO вопроса с
var types = Assembly.GetAssembly(typeof(SimpleCQRS.Event))
.GetTypes()
.Where(type => type.IsSubclassOf(typeof(SimpleCQRS.Event)));
в
var type = typeof(IEvent);
var types = Assembly.GetAssembly(typeof(IEvent))
.GetTypes()
.Where(t => type.IsAssignableFrom(t))
.Where(t => t.IsClass);