我开始使用官方c#驱动程序使用MongoDB。问题是我无法找到一种方法让bsonseriazer使用字段(而不是属性)来设置反序列化数据,同时能够使用LINQ Api。
在映射我的类时,我使用BsonClassMap.FieldMap()。但这不允许使用LINQ,因为公共属性仍然未映射。 BsonSerializer中是否有一种方法可以根据属性进行映射,但同时指定这些应该通过其后备字段直接设置?
我想使用字段进行反序列化的原因是省略了可能在setter中检查的自定义验证规则。
答案 0 :(得分:0)
我认为即使数据来自您自己的数据库,您也应该保留这些验证规则。它更清洁,更不容易出错并且更安全。
您可以创建自己的BsonSerializer
(或扩展现有的)以您想要的方式行事。我已经完成了其中的几个,而且非常简单。
在从MongoDB驱动程序获取项目后,您可以在bool _isInitialized = false;
中设置DTO
,并设置为true,并放弃验证规则,直到设置为止。
我没有看到另一种方式来分离"映射到属性(对于Linq
)和数据成员(对于序列化),我建议使用第一个选项。