当前位置: 欣欣网 > 码农

C# LiteDB的基础用法

2024-05-16码农

LiteDB是一个轻量级的嵌入式NoSQL数据库,与MongoDB的设计理念相似,但它完全由C#编写,因此与C#应用程序的集成非常顺畅。LiteDB提供了NoSQL(即键值对)的数据存储方式,并且是一个开源且免费的项目。以下是C#中使用LiteDB的基础用法。

1. 安装LiteDB包

首先,你需要通过NuGet包管理器来安装LiteDB。在Visual Studio中,你可以右键点击你的项目,选择「管理NuGet程序包」,然后搜索「LiteDB」并点击「安装」。

2. 定义数据模型

在C#中使用LiteDB,你首先需要定义一个或多个数据模型。这些数据模型将以类的形式存在,并且每个类将代表数据库中的一个集合。例如,你可以创建一个名为 Student 的类:

public classStudent
{
publicint Id { getset; }
publicint Age { getset; }
publicstring Name { getset; } = string.Empty;
publicstring[] Phone { getset; }
publicbool IsActive { getset; }
}

3. 连接数据库及CRUD操作

连接数据库

使用 LiteDatabase 类来连接或创建数据库。如果数据库文件不存在,LiteDB会自动创建它。

var db = new LiteDatabase(@"MyData.db");

创建集合

你可以使用 GetCollection<T> 方法来获取或创建一个集合。在这个例子中,我们将获取一个 Student 集合:

var col = db.GetCollection<Student>("student");

插入数据(Create)

使用 Insert 方法将数据插入到集合中:

var student = new Student() { Id = 1, Age = 18, Name = "Test", Phone = newstring[] { "8000-10001""1001-80801" }, IsActive = true };
col.Insert(student);

检索数据(Read)

使用 Find FindAll FindOne 方法来检索数据:

List<Student> list = col.Find(x => x.Age > 20).ToList(); // 查询年龄大于20的学生列表
Student user = col.FindOne(x => x.Id == 1); // 查询Id为1的学生信息

更新数据(Update)

虽然LiteDB没有直接的更新方法,但你可以通过检索文档,修改其属性,然后使用 Update 方法来更新它:

var studentToUpdate = col.FindOne(x => x.Id == 1); // 获取需要更新的学生信息
if (studentToUpdate != null) {
studentToUpdate.Name = "Updated Name"// 修改属性
col.Update(studentToUpdate); // 更新数据库中的记录
}

删除数据(Delete)

使用 Delete 方法来删除数据:

var studentToDelete = col.FindOne(x => x.Id == 1); // 获取需要删除的学生信息
if (studentToDelete != null) {
col.Delete(studentToDelete.Id); // 删除指定Id的记录
}

4. 创建索引以提高查询性能(可选)

你可以在特定字段上创建索引以提高查询性能。例如,在 Id 字段上创建一个唯一索引:

col.EnsureIndex(x => x.Id, true); // 在Id字段上创建唯一索引,第二个参数指定索引是否唯一

5. 关闭数据库连接

当你完成对数据库的所有操作后,应该关闭数据库连接以释放资源。虽然LiteDB会在垃圾回收时自动关闭连接,但显式关闭总是一个好习惯:

db.Dispose(); // 关闭数据库连接并释放资源

总结与注意事项:

  1. 轻量级与嵌入式 :LiteDB是一个轻量级的嵌入式数据库,非常适合桌面应用程序、移动应用程序或小型Web应用程序。

  2. 无服务器依赖 :与SQLite相似,LiteDB不需要任何外部服务器或进程。它直接读写磁盘上的文件。

  3. NoSQL特性 :LiteDB支持文档存储和查询,类似于MongoDB等NoSQL数据库。

  4. 性能优化 :为了提高查询性能,可以在常用查询字段上创建索引。

  5. 数据完整性 :虽然LiteDB是一个轻量级数据库,但它仍然支持事务和ACID属性(原子性、一致性、隔离性和持久性),确保数据的完整性和安全性。

  6. 跨平台兼容性 :LiteDB是用C#编写的,因此它可以在任何运行.NET的环境中运行,包括Windows、Linux和MacOS等操作系统。