好的,阿杰 👍
我来给你详细讲一下 LiteDB 数据库 ——这是一个在 .NET 环境中非常实用的轻量级嵌入式 NoSQL 数据库。


🔹 LiteDB 概述

  • 类型:嵌入式文档数据库(类似 MongoDB 的风格)
  • 平台:.NET (支持 .NET Framework / .NET Core / Xamarin / Unity 等)
  • 存储:单一 .db 文件,基于 BSON 格式存储数据
  • 依赖:纯 C# 实现,无需安装服务或额外依赖
  • 应用场景
    • 桌面程序 / 移动端应用(如 WinForms, WPF, MAUI, Unity 游戏存档)
    • 小型 Web 项目本地存储
    • 配置存储、缓存、日志、本地持久化

🔹 核心特性

  1. 文档数据库:类似 MongoDB,存储 BSON 文档,可以存储嵌套对象、数组。
  2. 单文件存储:所有数据存储在一个 .db 文件中,易于分发、备份。
  3. LINQ 查询:支持强类型查询,可以直接用 C# 的 LINQ。
  4. 事务支持:ACID 事务,保证数据一致性。
  5. 索引:支持单字段、多字段索引,加快查询。
  6. 加密:支持 AES-256 文件级加密。
  7. 轻量级:一个 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 的简单嵌入式存储