【问题标题】:c# BsonSerializer: deserialization through backing fieldsc# BsonSerializer:通过支持字段反序列化
【发布时间】:2013-11-29 02:20:14
【问题描述】:
我开始使用官方 c# 驱动程序使用 MongoDB。问题是我找不到让 bsonseriazer 使用字段(而不是属性)来设置反序列化数据并同时能够使用 LINQ Api 的方法。
映射我的班级时,我使用 BsonClassMap.FieldMap()。但这不允许使用 LINQ,因为公共属性仍未映射。
BsonSerializer 中有没有一种方法可以根据属性进行映射,但同时指定这些应该直接通过它们的支持字段进行设置?
我想使用字段进行反序列化的原因是省略可能在 setter 中检查的自定义验证规则。
【问题讨论】:
标签:
c#
.net
mongodb
serialization
mongodb-.net-driver
【解决方案1】:
我认为即使数据来自您自己的数据库,您也应该保留这些验证规则。它更干净、更不容易出错并且更安全。
您可以创建自己的BsonSerializers(或扩展现有的),以您想要的方式进行操作。我已经做了好几个,真的很简单。
您可以在您的 DTOs 中设置一个 bool _isInitialized = false;,在您从 MongoDB 驱动程序获取项目后立即将其设置为 true,并在设置之前放弃验证规则。
我没有看到另一种将映射“拆分”到属性(用于Linq)和数据成员(用于序列化)的方法,我推荐第一个选项。