.NET 6读取MongoDB时[JsonProperty]属性不生效问题求助
解决建议
1. 使用MongoDB官方特性映射字段
MongoDB .NET驱动并不识别[DataMember]和[JsonProperty]特性,需要使用它自带的[BsonElement]特性来明确指定模型属性与MongoDB文档字段的对应关系:
[BsonIgnoreExtraElements] public class Activity { [BsonElement("activitySource")] public string ActivitySource { get; set; } }
添加该特性后,驱动会正确将模型中的ActivitySource属性映射到数据库集合里的activitySource字段,查询时就能匹配到对应数据。
2. 全局配置驼峰命名序列化规则
如果你的MongoDB文档普遍采用驼峰命名,不想给每个属性单独加特性,可以全局配置驱动的序列化约定,自动将PascalCase格式的属性名转为camelCase格式的字段名:
// 全局注册驼峰命名约定 var conventionPack = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", conventionPack, t => true); // 后续正常初始化客户端和集合 var client = new MongoClient("你的连接字符串"); var collection = client.GetDatabase("数据库名").GetCollection<Activity>("Activity");
这样所有模型的PascalCase属性都会自动对应到数据库中的camelCase字段,无需逐个配置特性。
3. 校验查询条件的准确性
确认查询时传入的"...."值与MongoDB中activitySource字段的实际值完全一致,包括大小写、空格、特殊字符等细节,避免因值不匹配导致查询无结果。
内容的提问来源于stack exchange,提问作者शेखर
相关产品推荐
相关产品推荐

