当我将我的域存储在 MongoDB 中时,我使用自定义约定(如此处所述)以便将我的枚举作为字符串表示形式进行持久化,因为我们在调试时发现它更容易。
在 Rebus 中使用 MongoDB 作为我的 saga 存储时,我也想做同样的事情。有没有办法做到这一点?
好的,我的错...约定是使用 ConventionsRegistry 全局定义的
var conventions = new ConventionPack();
conventions.Add(new EnumSerializationConvention(BsonType.String));
ConventionRegistry.Register("Saga conventions", conventions, x => true);
关键是 Register 方法的第三个参数,它充当过滤器以选择受约定影响的类(在我的情况下,我是按命名空间过滤的,这就是传奇数据未正确持久化的原因)。