我们正在使用LiteDb来存储对象。
我们遇到的一个问题是,人们正在创建包含仅包含公共getter的属性的对象。这意味着从数据库还原对象时,此属性不已填充。
处于默认状态的LiteDb不会通过异常或其他方式通知我们此问题。有可能改变这个吗?
TLDR:我们希望找到一种方法让LiteDb以某种方式通知我们,当一个对象在内部从BSON重新恢复时无法设置属性。
答案 0 :(得分:3)
LiteDB使用使用BsonMapper
类从POCO类转换的文档。 BsonMapper
映射来自实体类的属性并转换为文档字段。当前版本(v2)支持此规则:
BsonMapper.ToDocument()
自动将类的每个属性转换为遵循以下约定的文档字段:
[BsonIgnore]
修饰属性,使其不会映射到文档字段[BsonField]
修饰属性以自定义文档字段的名称您可以使用BsonMapper全局实例(BsonMapper.Global
)或自定义实例,并在构造函数中传递给LiteDatabase
。将此实例保留在一个位置,以避免每次使用数据库时重新创建所有映射。
在一些用户请求之后,下一个版本(v3)将BsonMapper作为内部插件进行操作,并支持更多选项,如:
IBsonMapper
自定义实施,外部JSON.NET
支持序列化。