在MongoDb中持久化Rebus sagas时使用自定义约定

本文关键字:自定义 约定 sagas MongoDb 持久化 Rebus | 更新日期: 2023-09-27 17:59:22

当我将域存储在MongoDB中时,我使用了一个自定义约定(如本文所述),以便将枚举保持为字符串表示,因为我们发现在调试时更容易。

当使用MongoDB作为我在Rebus中的传奇存储时,我也希望这样做。有办法做到这一点吗?

在MongoDb中持久化Rebus sagas时使用自定义约定

好吧,我的坏。。。使用conventions Registry 在全球范围内定义公约

var conventions = new ConventionPack();
conventions.Add(new EnumSerializationConvention(BsonType.String));
ConventionRegistry.Register("Saga conventions", conventions, x => true);

关键是Register方法的第三个参数,它充当一个过滤器来选择受约定影响的类(在我的情况下,我是按命名空间进行过滤的,这就是saga数据没有正确持久化的原因)。