好的,阿杰 👍
我来给你详细讲一下 LiteDB 数据库 ——这是一个在 .NET 环境中非常实用的轻量级嵌入式 NoSQL 数据库。
🔹 LiteDB 概述
- 类型:嵌入式文档数据库(类似 MongoDB 的风格)
- 平台:.NET (支持 .NET Framework / .NET Core / Xamarin / Unity 等)
- 存储:单一
.db
文件,基于 BSON 格式存储数据 - 依赖:纯 C# 实现,无需安装服务或额外依赖
- 应用场景:
- 桌面程序 / 移动端应用(如 WinForms, WPF, MAUI, Unity 游戏存档)
- 小型 Web 项目本地存储
- 配置存储、缓存、日志、本地持久化
🔹 核心特性
- 文档数据库:类似 MongoDB,存储 BSON 文档,可以存储嵌套对象、数组。
- 单文件存储:所有数据存储在一个
.db
文件中,易于分发、备份。 - LINQ 查询:支持强类型查询,可以直接用 C# 的 LINQ。
- 事务支持:ACID 事务,保证数据一致性。
- 索引:支持单字段、多字段索引,加快查询。
- 加密:支持 AES-256 文件级加密。
- 轻量级:一个 DLL 文件,几百 KB 大小。
🔹 基本使用
1. 安装
通过 NuGet:
dotnet add package LiteDB
2. 建立连接
using LiteDB;
using (var db = new LiteDatabase(@"MyData.db"))
{
var col = db.GetCollection<Customer>("customers");
// 插入数据
var customer = new Customer { Name = "阿杰", Age = 25 };
col.Insert(customer);
// 查询
var result = col.FindOne(x => x.Name == "阿杰");
Console.WriteLine(result.Age);
// 更新
result.Age = 26;
col.Update(result);
// 删除
col.Delete(result.Id);
}
public class Customer
{
public int Id { get; set; } // 自动递增 ID
public string Name { get; set; }
public int Age { get; set; }
}
🔹 高级功能
1. 索引
col.EnsureIndex(x => x.Name);
2. 事务
using (var trans = db.BeginTrans())
{
col.Insert(new Customer { Name = "小王" });
col.Insert(new Customer { Name = "小李" });
trans.Commit();
}
3. 加密数据库
var db = new LiteDatabase("Filename=MyData.db;Password=123456");
4. 文件存储(类似 GridFS)
var fs = db.FileStorage;
fs.Upload("my-photo", @"C:\photo.jpg");
fs.Download("my-photo", @"C:\copy.jpg");
🔹 优缺点总结
✅ 优点
- 无需安装,拷贝即用,单文件存储
- 类似 MongoDB 的文档存储,灵活
- 支持事务、索引、加密
- 与 C# 结合紧密(LINQ 查询)
- 适合小型/中型项目
⚠️ 缺点
- 单机嵌入式(不能像 SQL Server / MongoDB 那样分布式扩展)
- 并发支持有限(适合轻量场景,不适合高并发 Web 大型系统)
- 功能比 MongoDB/SQLite 少(例如聚合分析、复杂事务)
🔹 使用场景建议
- 桌面应用(WinForms/WPF/MAUI)
- 移动端(Xamarin/Unity 游戏存档)
- 小型 Web 项目的本地缓存/配置存储
- 替代 SQLite 的简单嵌入式存储
发表回复