LiteDB Demo 简单封装
自己学习写了个Demo,简单封装了一下,有需要的可以拿去玩玩
gitee地址
LiteDB 是一个 .NET 开发的小型快速轻量级的 NoSQL 嵌入式数据库,特性:
无服务器 NoSQL 文档存储
简单的 API,类似于 MongoDB
单个 DLL(小于 450kb)中的.NET 4.5 / NETStandard 1.3 / 2.0 的 100%C#代码
线程安全
具有完整交易支持的 ACID
写入失败后的数据恢复(WAL 日志文件)
使用 DES(AES)加密的数据文件加密
将 POCO 类 BsonDocument 映射为使用属性或流利的映射器 API
存储文件和流数据(例如 MongoDB 中的 GridFS)
单个数据文件存储(如 SQLite)
索引文档字段以快速搜索
LINQ 查询支持
类似 SQL 的命令来访问 / 转换数据
LiteDB Studio- 用于数据访问的漂亮 UI
开源,所有人免费 - 包括商业用途
public static string dbName = "LiteDB.ldb"; private static string datasource = $@"{System.Windows.Forms.Application.StartupPath}/Data/LiteDB.ldb";//连接字符串 private static string tableName = string.Empty; public static LiteDatabase _db; /// <summary> /// 核心的LiteDatabase数据库操作对象,这个对象私有只在类内使用。 /// </summary> private static LiteDatabase db { get { if (_db == null) _db = new LiteDatabase(datasource); return _db; } } /// <summary> /// 所有的liteDB列表。 /// </summary> public LiteCollection<T> liteDB { get { return (LiteCollection<T>)db.GetCollection<T>(tableName); } } /// <summary> /// 创建一个LiteDB对象,有一个参数表明对应的文件路径。 /// </summary> /// <param name="dbpath">对应数据库文件的路径,默认位置为程序目录下"mydata.ldb"</param> public LiteDBHelper(string table) { tableName = table; Instance(); } private void Instance() { try { //string dbName, string password string path = System.Windows.Forms.Application.StartupPath + @"/Data/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string databaseFileName = path + dbName; if (!File.Exists(databaseFileName)) { //创建一个FileInfo对象 FileInfo file = new FileInfo(datasource); //创建文件 FileStream fs = file.Create(); //关闭文件流 fs.Close(); } } catch (Exception ex) { } }
调用方式:
private void button1_Click(object sender, EventArgs e) { Stopwatch sw = new Stopwatch();//计算耗时 sw.Start(); List<User> list = new List<User>(); for (int i = 0; i < 1000; i++) { User user = new User(); user.name = $"1Iae9eKowPh4JOavSFiji8x3V9VE4wWL3vlw/ljDoHi4fY766nnS/FomkbPLYD2f2bBxZbRVDDytG/usdxX8OqL/5Yo1"; list.Add(user); } int result= liteDBHelper.Insert<User>(list); sw.Stop(); string strJson = $"查询到 {result} 条数据 耗时:{sw.Elapsed.TotalSeconds}秒"; textBox1.Text = strJson; } private void button3_Click(object sender, EventArgs e) { textBox1.Text = ""; Stopwatch sw = new Stopwatch();//计算耗时 sw.Start(); // var list = liteDBHelper.liteDB.Query().Where(t=>t.id>10000).OrderBy(s=>s.id).ToList(); //var list = liteDBHelper.liteDB.FindOne(t => t.id > 100); var list= liteDBHelper.FindAll<User>(); // 将 List 转换为 JSON 格式的字符串 //string json = JsonConvert.SerializeObject(list); sw.Stop(); string strJson = $"查询到 {list.Count()} 条数据 耗时:{sw.Elapsed.TotalSeconds}秒"; textBox1.Text = strJson; } private void button2_Click(object sender, EventArgs e) { int count = 0; Stopwatch sw = new Stopwatch();//计算耗时 sw.Start(); var user= liteDBHelper.liteDB.Find(t=>t.id>=0,0,100).ToList(); if (user != null) { count = user.Count(); foreach (var item in user) { liteDBHelper.Delete<User>(t => t.id == item.id); } } else { count = liteDBHelper.DeleteAll<User>(); } liteDBHelper.Rebuild(); sw.Stop(); textBox1.Text =$"删除 {count} 条数据 耗时:{sw.Elapsed.TotalSeconds}秒 "; } }