gpt4 book ai didi

mongodb-.net-driver - 未知鉴别符值 'MyEvent'

转载 作者:行者123 更新时间:2023-12-04 04:57:50 26 4
gpt4 key购买 nike

joliver/EventStore中使用MongoDB持久性引擎会导致错误Unknown discriminator value 'MyEvent'。仅当我尝试加载所有事件以重播this.storeEvent.Advanced.GetFrom(new DateTime(2010, 1,1))之类的事件时才引起该问题

问题是在ExtensionsMethods.cs中引起的

public class MyClassEvent : IDomainEvent { ... }

public static Commit ToCommit(this BsonDocument doc, IDocumentSerializer serializer)
{
if (doc == null)
return null;

var id = doc["_id"].AsBsonDocument;
var streamId = id["StreamId"].AsGuid;
var commitSequence = id["CommitSequence"].AsInt32;

var events = doc["Events"].AsBsonArray.Select(e => e.AsBsonDocument["Payload"].IsBsonDocument ? BsonSerializer.Deserialize<EventMessage>(e.AsBsonDocument["Payload"].AsBsonDocument) : serializer.Deserialize<EventMessage>(e.AsBsonDocument["Payload"].AsByteArray)).ToList();
var streamRevision = doc["Events"].AsBsonArray.Last().AsBsonDocument["StreamRevision"].AsInt32;
return new Commit(
streamId,
streamRevision,
doc["CommitId"].AsGuid,
commitSequence,
doc["CommitStamp"].AsDateTime,
BsonSerializer.Deserialize<Dictionary<string, object>>(doc["Headers"].AsBsonDocument),
events);
}

我的配置是这样的:

 Wireup.Init()                
.UsingMongoPersistence(connectionName, new DocumentObjectSerializer())
.UsingBsonSerialization()
.UsingAsynchronousDispatcher()
.PublishTo(this.container.Resolve<IPublishMessages>())
.Build();

但是尝试了几乎所有类型的序列化器选项。

最佳答案

尝试使用BsonClassMap.RegisterClassMap方法注册您的对象(本身就是事件消息以及EventStore有效负载的主题)。看来EventStore的mongo扩展可以很好地处理字符串有效负载,但不能很好地处理反序列化的对象...就我而言,至少注册分类是解决方案。

关于mongodb-.net-driver - 未知鉴别符值 'MyEvent',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com