You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB C# Driver中如何将可空枚举类型映射为字符串

错误原因

报错的根本原因是你配置的EnumSerializer<Gender>仅适配非可空的Gender值类型,和属性的Nullable<Gender>(即Gender?)类型不匹配。

解决方案

方案1:单个字段单独配置

直接用MongoDB驱动自带的NullableSerializer把枚举序列化器包裹一层即可,修改你的类映射配置代码:

BsonClassMap.RegisterClassMap<Person>(map =>
{
    map.AutoMap();
    map.SetIgnoreExtraElements(true);
    map.MapMember(x => x.Gender)
       .SetSerializer(new NullableSerializer<Gender>(new EnumSerializer<Gender>(BsonType.String)));
});

方案2:全局注册可空枚举序列化器

如果项目中多处用到Gender?类型,不需要每个类单独配置,程序初始化时全局注册一次即可:

BsonSerializer.RegisterSerializer(
    new NullableSerializer<Gender>(new EnumSerializer<Gender>(BsonType.String))
);

效果验证

配置完成后:

  • 当Gender属性为null时,MongoDB中会存储为null值
  • 当Gender属性有值时,会序列化为"Male"/"Female"字符串存储,反序列化时也能自动映射回对应的枚举值

内容的提问来源于stack exchange,提问作者dhrm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:45:10