我正在使用sqlite3
为我们的应用程序实现键值持久性存储。
KeyValueTable
使用以下命令创建:
CREATE TABLE KeyValueTable ( ObjectName TEXT PRIMARY KEY NOT NULL, ObjectValue BLOB)
Get/Set
键值的API具有以下签名:
bool GetValue<T>(string key, out T value);
bool SetValue<T>(string key, T value);
因此,您可以看到我可以使用此API获取并设置整个对象。对于序列化,我正在使用Newtonsoft.Json.JsonConvert.SerializeObject
。
以使用上述API和序列化存储的以下类为例:
public class HistoryLog
{
public string Data { get; set; }
public long Id { get; set; }
public long Sequence { get; set; }
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
}
实现的问题在于,每次需要更新单个字段时,都必须序列化整个对象并将其写入数据库。
是否有一种方法可以缓存序列化对象并在需要时更新各个字段,并将此缓存的序列化对象写入数据库?
这样,我每次需要更新成员字段时都可以保存序列化。