MongoDB与.NET API模型字段匹配异常:'BookID'不匹配问题
问题根本原因与解决方案
根本原因
你给BookID属性添加了[BsonId]特性,MongoDB .NET驱动的默认规则是:被[BsonId]标记的属性会被映射到集合中的_id字段,而非属性本身的名称BookID。但你的Books集合实际存储的字段是BookID,驱动在反序列化文档时,会把模型的BookID对应到数据库的_id字段,找不到匹配项就抛出了'BookID' does not match any field or property异常。
彻底修复方案
不用依赖[BsonIgnoreExtraElements]临时规避,有两种直接解决的方式:
- 显式指定字段映射
给BookID属性添加[BsonElement("BookID")]特性,强制驱动将该属性与数据库中的BookID字段绑定,同时保留主键标识:[BsonId] [BsonRepresentation(BsonType.ObjectId)] [BsonElement("BookID")] public string? BookID { get; set; } - 调整数据库字段(若允许)
如果可以修改集合数据,将BookID字段重命名为_id,这样驱动的默认映射规则就能直接生效,无需额外添加特性。
内容的提问来源于stack exchange,提问作者onTheInternet
相关产品推荐
相关产品推荐

