一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库

简介: 一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库

前言

今天给大家分享一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库:LiteDB。本篇文章主要是介绍LiteDB和在.NET中如何使用。

LiteDB介绍

LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。

  • 无服务器的 NoSQL 文档存储
  • 简单的 API,类似于 MongoDB
  • 100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.3/2.0,以单个 DLL(不到 450KB)形式提供
  • 线程安全
  • 支持 ACID,完整的事务支持
  • 写入失败后的数据恢复(WAL 日志文件)
  • 使用 DES(AES)加密算法对数据文件进行加密
  • 使用属性或流畅的映射器 API 将 POCO 类映射为 BsonDocument
  • 存储文件和流数据(类似于 MongoDB 的 GridFS)
  • 单一数据文件存储(类似于 SQLite)
  • 对文档字段建立索引以实现快速搜索
  • 支持 LINQ 查询
  • 提供类似于 SQL 的命令来访问/转换数据
  • LiteDB Studio - 数据访问的精美用户界面
  • 开源且免费供所有人使用,包括商业用途

LiteDB应用场景

可以在以下场景中使用 LiteDB:

  • 桌面/本地小型应用程序
  • 应用程序文件格式
  • 小型网站/应用程序
  • 每个账户/用户数据存储一个数据库的情况

LiteDB项目源代码

创建一个LiteDBCwTest控制台

安装LiteDB包

搜索LiteDB包,点击安装。

定义Customer数据模型

public class Customer
    {
        /// <summary>
        /// Id
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// Name
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// Age
        /// </summary>
        public int Age { get; set; }
        /// <summary>
        /// Email
        /// </summary>
        public string Email { get; set; }
    }

LiteDB数据创建、插入、查询和删除

namespace LiteDBCwTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //创建或打开数据库文件
            using (var db = new LiteDatabase(@"MyCustomerData.db"))
            {
                // 获取集合(相当于表)
                var collection = db.GetCollection<Customer>("customers");
                var customers = new List<Customer>()
                {
                    new Customer
                    {
                        Name = "追逐时光者",
                        Age = 18,
                        Email = "17854545@gmail.com"
                    },
                    new Customer
                    {
                        Name = "大姚",
                        Age = 30,
                        Email = "16556545@gmail.com"
                    }
                };
                // 批量插入数据
                collection.Insert(customers);
                // 查询数据
                var result = collection.FindAll();
                foreach (var c in result)
                {
                    Console.WriteLine($"Name: {c.Name}, Age: {c.Age}, Email: {c.Email}");
                }
                // 根据条件查询数据
                var query = Query.EQ("Age", 30);
                var resultByAge = collection.Find(query);
                foreach (var c in resultByAge)
                {
                    Console.WriteLine($"Name: {c.Name}, Age: {c.Age}, Email: {c.Email}");
                }
                // 删除数据
                var deletedResult = collection.Delete(resultByAge.FirstOrDefault().Id);
            }
        }
    }
}

创建成功的数据库文件

LiteDB.Studio管理工具下载

用于查看和编辑 LiteDB v5 文档的图形用户界面工具。

LiteDB.Studio管理数据

连接MyCustomerData数据库

查看customers表数据

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

GitHub源码地址:https://github.com/mbdavid/LiteDB

官方文档地址:https://www.litedb.org/api/

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

相关文章
|
1月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
67 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
2月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
37 4
|
1月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
131 1
C# .NET面试系列十:数据库概念知识
|
2月前
|
SQL 存储 数据库
艺术型轻量级数据库 --Sqlite
艺术型轻量级数据库 --Sqlite
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
42 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0