编辑
2025-02-03
C# 应用
00
请注意,本文编写于 92 天前,最后修改于 92 天前,其中某些信息可能已经过时。

目录

LiteDB 主要特点
安装 LiteDB
快速开始
1. 创建实体类
2. 插入数据
3. 查询数据
4. 更新数据
5. 删除数据
定义 IDataRepository 接口
实现 UserRepository 类
使用 UserRepository 类
结论

LiteDB 是一个轻量、快速、嵌入式的 NoSQL 数据库。它不需要服务器,适用于桌面、移动应用以及小型 Web API 项目,本人在一些小项目中比较喜欢使用。本文将介绍 LiteDB 的主要特点以及如何在 C# 中使用 LiteDB,通过完整的例子展示常见的数据库操作。

LiteDB 主要特点

  • 无需服务器:LiteDB 运行于单一 DLL 中,不需要复杂的服务器配置。
  • 轻量级:数据库文件小巧,适用于资源受限的环境。
  • 嵌入式:LiteDB 直接嵌入到应用程序中。
  • NoSQL:基于 BSON(二进制 JSON 序列化协议)存储数据。
  • 简单易用:通过简单的 API 实现 CRUD 操作。
  • 支持 LINQ:方便的数据查询与操作支持。

安装 LiteDB

首先,通过 NuGet 包管理器安装 LiteDB。可以在 Visual Studio 的包管理控制台中输入以下命令:

PowerShell
Install-Package LiteDB

或者在 .csproj 文件中添加以下包引用:

XML
<PackageReference Include="LiteDB" Version="5.0.9" />

image.png

快速开始

我们将通过一个简单的 C# 控制台应用展示如何使用 LiteDB 实现基本的 CRUD(创建、读取、更新、删除)操作。

1. 创建实体类

首先,我们需要定义一个实体类。例如,我们要在数据库中存储用户信息,定义如下:

C#
public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } }

2. 插入数据

插入数据是基本的数据库操作,我们首先创建 LiteDatabase 实例,然后获取集合并插入数据。

C#
private void btnInsert_Click(object sender, EventArgs e) { // 连接数据库(若文件不存在会自动创建) using (var db = new LiteDatabase(@"MyData.db")) { // 获取 User 集合(若不存在会自动创建) var users = db.GetCollection<User>("users"); // 创建新的 User 对象并插入集合 var user = new User { Name = "John Doe", Email = "johndoe@example.com" }; users.Insert(user); Console.WriteLine("User inserted with Id: " + user.Id); } }

image.png

3. 查询数据

LiteDB 提供了简单的查询接口,可以使用 LINQ 查询或通过 BsonExpression 指定查询条件。

C#
private void btnSearch_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 查询单个用户 var user = users.FindById(1); if (user != null) { Console.WriteLine($"User found: {user.Name}, {user.Email}"); } // 使用 LINQ 查询所有用户 var allUsers = users.FindAll().ToList(); foreach (var u in allUsers) { MessageBox.Show($"User: {u.Name}, {u.Email}"); } } }

image.png

4. 更新数据

可以根据 Id 或其他条件查找并更新现有的记录。

C#
private void btnUpdate_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 查找用户并更新 var user = users.FindById(1); if (user != null) { user.Email = "john.doe@newdomain.com"; users.Update(user); MessageBox.Show("User updated"); } } }

image.png

5. 删除数据

可以根据 Id 或其他条件删除记录。

C#
private void btnDelete_Click(object sender, EventArgs e) { // 连接数据库 using (var db = new LiteDatabase(@"MyData.db")) { var users = db.GetCollection<User>("users"); // 通过 Id 删除用户 bool success = users.Delete(1); if (success) { MessageBox.Show("User deleted"); } } }

定义 IDataRepository 接口

首先,我们定义一个通用的 IDataRepository 接口。这使我们能够以更抽象的方式处理数据存储库,并方便以后进行扩展。

C#
public interface IDataRepository<T> { void Insert(T entity); T GetById(int id); IEnumerable<T> GetAll(); void Update(T entity); bool Delete(int id); }

实现 UserRepository 类

接下来,我们实现一个 UserRepository 类来处理 User 实体的数据库操作。UserRepository 类继承 IDataRepository<User> 接口。

C#
using LiteDB; using System; using System.Collections.Generic; public class UserRepository : IDataRepository<User>, IDisposable { private readonly LiteDatabase _database; private readonly ILiteCollection<User> _usersCollection; public UserRepository(string databasePath) { _database = new LiteDatabase(databasePath); _usersCollection = _database.GetCollection<User>("users"); } public void Insert(User entity) { _usersCollection.Insert(entity); } public User GetById(int id) { return _usersCollection.FindById(id); } public IEnumerable<User> GetAll() { return _usersCollection.FindAll(); } public void Update(User entity) { _usersCollection.Update(entity); } public bool Delete(int id) { return _usersCollection.Delete(id); } public void Dispose() { _database?.Dispose(); } }

使用 UserRepository 类

有了数据仓储类之后,我们可以在应用程序中使用 UserRepository 来进行User实体的数据库操作。

C#
private void btnRepository_Click(object sender, EventArgs e) { // 数据库文件路径 string databasePath = @"MyData.db"; using (var userRepository = new UserRepository(databasePath)) { // 插入数据 var newUser = new User { Name = "Jane Doe", Email = "janedoe@example.com" }; userRepository.Insert(newUser); MessageBox.Show($"User inserted with Id: {newUser.Id}"); // 查询数据 var user = userRepository.GetById(newUser.Id); if (user != null) { MessageBox.Show($"User found: {user.Name}, {user.Email}"); } // 更新数据 user.Email = "jane.doe@newdomain.com"; userRepository.Update(user); MessageBox.Show("User updated"); // 列出所有用户 var allUsers = userRepository.GetAll(); foreach (var u in allUsers) { MessageBox.Show($"User: {u.Name}, {u.Email}"); } // 删除数据 if (userRepository.Delete(user.Id)) { MessageBox.Show("User deleted"); } } }

image.png

结论

LiteDB 是一个非常实用且易于使用的嵌入式 NoSQL 数据库,适用于小型项目和快速开发。在 C# 中使用 LiteDB 非常简单且高效,通过简单的 API,我们可以方便地进行数据存储和查询。本文介绍了 LiteDB 的基本特点,并通过完整的例子展示了如何进行 CRUD 操作,帮助开发者快速上手。

希望这篇文章能够为你在 C# 项目中使用 LiteDB 提供基础的参考和帮助!

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!