# DataPairs **Repository Path**: caoyiliang/DataPairs ## Basic Information - **Project Name**: DataPairs - **Description**: 使用SQLite和文件存储数据键值的类库 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-04-14 - **Last Updated**: 2025-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataPairs 使用SQLite和文件存储数据键值的类库 ### master为Newtonsoft.Json版本,一个是System.Text.Json分支,一个是Ceras分支 ### FastDeepClone:克隆字段和属性 忽略使用[FastDeepClonerIgnore]特性 ### Newtonsoft.Json:只克隆公开属性,如果需要克隆私有属性和字段请使用[JsonProperty]特性标记,忽略使用[JsonIgnore]特性 ## 使用方法非常简单,比如原先有如下数据模型需要存储: ``` public class Data { public decimal A { get; set; } public List B { get; set; } = new List(); } ``` ## 只需以下操作即可存储,注意:下例子为Xamarin中存储为sqlite数据库例子,还能存成文件格式,看下构造即可明了 ``` public class Data { private static readonly IDataPair pair = new DataPair("Data", Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Data.dll"), StorageType.Xamarin); public decimal A { get; set; } public List B { get; set; } = new List(); public static async Task GetValueAsync() { var datas = await pair.TryGetValueAsync(); return datas; } public static async Task TrySaveChangeAsync(Data data) { await pair.TryInitOrUpdateAsync(data); } } ``` ## 最后可在初始化程序时调用以下代码,数据库中保存的键值对将会在内存中构建,使之后的操作不卡顿: ``` await Data.GetValueAsync(); ```