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

C# MongoDB序列化异常:子类属性与父类元素名冲突求助

解决MongoDB Bson序列化异常:同名属性元素名冲突

问题原因

aClassDao继承自aClass并重写了Content属性,MongoDB的Bson序列化器默认会处理基类和子类的所有属性,两者的Content属性使用了相同的元素名,导致序列化时出现冲突,触发BsonSerializationException。

解决方法

方法一:忽略基类的同名属性

在基类的Content属性上添加[BsonIgnore]特性,序列化时跳过基类的该属性,仅处理子类的重写属性:

public class aClass
{
    [BsonIgnore]
    public virtual string Content { get; set; }
}

方法二:通过类映射配置序列化规则

在应用初始化阶段注册类映射,手动配置子类的属性映射逻辑,确保只使用子类的Content属性:

// 放在应用启动代码中(如Program.cs或Startup.cs)
BsonClassMap.RegisterClassMap<aClassDao>(cm =>
{
    cm.AutoMap();
    // 取消基类Content属性的映射
    cm.UnmapProperty(c => ((aClass)c).Content);
    // 映射子类的Content属性
    cm.MapProperty(c => c.Content);
});

方法三:为子类属性指定唯一元素名(可选)

如果需要保留基类属性的序列化能力,可以给子类的Content属性指定不同的元素名,避免命名冲突:

public class aClassDao : aClass
{
    [BsonElement("DaoContent")]
    public override string Content { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:52:24