MongoDB 序列化约定 ignoreifnullconvention 忽略假值

MongoDB Serialization Conventions ignoreifnullconvention ignores false values

我有一个将值写入 mongo 的 C# 应用程序。有了它,我就有了一个会议包

var pack = new ConventionPack();
            pack.Add(new IgnoreIfDefaultConvention(true));
            ConventionRegistry.Register(
                "Ignore if default",
                pack,
                t => x);

写入我的数据库是:

var user = new UserModel{
     Name = "Willy",
     Active = false
}
mongoContext.User.InsertOne(user);

我用它来忽略缺失值并避免在我的 POCO 模型中写入每个字段。其中一个值 Active 必须包含 true 和 false。但是当我用约定包写值时,它会忽略所有错误的 Active
为了测试它,我 运行 它没有约定包并且写值很好,但是有约定包它没有。有没有办法排除特定字段或告诉约定包接受错误值?
谢谢

IgnoreIfDefaultConvention 将忽略所有默认值。 请改用 IgnoreIfNullConvention。

var pack = new ConventionPack();
pack.Add(new IgnoreIfNullConvention(true));
ConventionRegistry.Register("Ignore if null",pack,t => x);

另一种选择是将 UserModel 更改为使用枚举而不是布尔标志。例如,枚举 UserStatus { Unknown, Active, Inactive }。在这种情况下,IgnoreIfDefault 约定将忽略默认值 "Unknown",但将捕获其余值。