LiteDB用法小结
LiteDB的基本数据结构
BsonDocument
BsonDocument
用于存储单一对象,其构造函数接收字典型数据,定义存储的具体内容。
BsonArray
BsonArray
用于存储多项同类型对象,其构造函数接收对象集合。
BsonValue
BsonValue
是BsonDocument
和BsonArray
的公共基类,可以在运行时确定其具体类型,通过一系列As*
方法将其转换为具体类型。
简单对象的存储
对于单一对象,灵活、地控制存储的存取对象数据,是通过自定义对象的序列化和反序列化函数实现。
//
// 自身直接支持LiteDB存储的Point类
//
public readonly struct Point
{
public Point(double x, double y)
{
X = x;
Y = y;
}
public double X { get; }
public double Y { get; }
public static Point Zero { get; } = new Point(, );
#region LiteDB
/// <summary>
/// 在静态构造函数中调用注册函数,
/// 确保LiteDB引擎能够找到此类对应的序列化和反序列化函数
/// </summary>
static Point() => RegisterType();
/// <summary>
/// 注册序列化与反序列化函数
/// </summary>
public static void RegisterType()
=> BsonMapper.Global.RegisterType(Serialize, Deserialize);
/// <summary>
/// 序列化
/// </summary>
public static BsonValue Serialize(Point parameter)
=> new BsonDocument(new Dictionary<string, BsonValue>
{
{"X", parameter.X}, // 定义需要存储的数据项
{"Y", parameter.Y},
});
/// <summary>
/// 反序列化
/// </summary>
public static Point Deserialize(BsonValue bsonValue)
{
var x = bsonValue["X"].AsDouble; // 提取、解析存储的数据项
var y = bsonValue["Y"].AsDouble;
return new Point(x, y);
}
#endregion
}
相关文章