Я работаю над реализацией хранилища значений ключа для нашего приложения, используя sqlite3
.
. KeyValueTable
создается с помощью следующей команды:
CREATE TABLE KeyValueTable ( ObjectName TEXT PRIMARY KEY NOT NULL, ObjectValue BLOB)
APIв Get/Set
значения ключа имеют следующую подпись:
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; }
}
Проблема с моей реализацией заключается в том, чтокаждый раз, когда мне нужно обновить отдельные поля, мне нужно сериализовать весь объект и записать его в базу данных.
Может ли быть способ кэшировать сериализованные объекты и обновлять отдельные поля по мере необходимости и записывать вбаза данных это кэшированный сериализованный объект?
Таким образом, я могу сохранить сериализацию каждый раз, когда мне нужно обновить поля членов.