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 { get; set; }
publicint Age { get; set; }
publicstring Name { get; set; } = string.Empty;
publicstring[] Phone { get; set; }
publicbool IsActive { get; set; }
}
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(); // 关闭数据库连接并释放资源
总结与注意事项:
轻量级与嵌入式 :LiteDB是一个轻量级的嵌入式数据库,非常适合桌面应用程序、移动应用程序或小型Web应用程序。
无服务器依赖 :与SQLite相似,LiteDB不需要任何外部服务器或进程。它直接读写磁盘上的文件。
NoSQL特性 :LiteDB支持文档存储和查询,类似于MongoDB等NoSQL数据库。
性能优化 :为了提高查询性能,可以在常用查询字段上创建索引。
数据完整性 :虽然LiteDB是一个轻量级数据库,但它仍然支持事务和ACID属性(原子性、一致性、隔离性和持久性),确保数据的完整性和安全性。
跨平台兼容性 :LiteDB是用C#编写的,因此它可以在任何运行.NET的环境中运行,包括Windows、Linux和MacOS等操作系统。