.NET NoSQL 嵌入式数据库 LiteDB 使用教程

news2024/11/23 2:31:35

前言

今天大姚给大家分享一个小巧、快速、轻量级的.NET 开源且免费(MIT License)的 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项目源代码

 

ad308ec5487c0d2c4e86e3f7a45144b1.png

创建一个LiteDBCwTest控制台

 

22f3532f060792331475288466f0dda5.png

 

61d77808fe5637da425b952be15b88f5.png

安装LiteDB包

搜索LiteDB包,点击安装。

 

f03a6039b620ee9bb4814b8e474428d3.png

定义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);
            }
        }
    }
}

创建成功的数据库文件

 

8a42e45a71aac21e6e58d46064814b3d.png

LiteDB.Studio管理工具下载

  • https://github.com/mbdavid/LiteDB.Studio/releases

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

 

ee746ccc439e8c2bc48afc53f80bd3fe.png

LiteDB.Studio管理数据

连接MyCustomerData数据库

 

73654bba8b07a8321f4ab4aeea0e74f4.png

 

e6dda2efa581c6b2bde9c1923566f503.png

查看customers表数据

 

dcf84ecd9945521830b947696b448acb.png

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫 - 初识requests模块

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 前言 requests 是一个用于发送 HTTP 请求的 Python 库&#xff0c;设计简单且功能强大&am…

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类 分类名: (图片张数&#xff0c; 标注个数) landsI ide: (2299&#xff0c;6545) 总数: (2314&#xff0c; 6545) 总类(nc): 1类 遥感滑坡目标检测数据集 (Remote Sensing Landslide Detection Dataset) 数据集概述 该…

【PS2020】Adobe Photoshop 2020 中文免费版

photoshop 2020是全球最大的图像处理软件&#xff0c;为用户提供了广泛的专业级润饰工具套件&#xff0c;集成了专为激发灵感而设计的强大编辑功能&#xff0c;帮助用户制作出满意的图片效果&#xff0c;是很多摄影师、广告师等专业人员必备的一款图像及照片后期处理大型专业软…

【机器学习】网络安全——异常检测与入侵防御系统

我的主页&#xff1a;2的n次方_ 随着全球互联网和数字基础设施的不断扩展&#xff0c;网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁&#xff08;APT&#xff09;&#xff0c;网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…

Spring Boot 进阶-浅析SpringBoot中如何完成数据校验

在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。 但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spr…

c++继承(下)

c继承&#xff08;下&#xff09; &#xff08;1&#xff09;继承与友元&#xff08;2&#xff09;继承与静态成员&#xff08;3&#xff09;多继承及其菱形继承问题3.1 继承模型3.2 虚继承3.3 多继承中指针偏移问题 &#xff08;4&#xff09;继承和组合&#xff08;9&#xf…

知识图谱构建方法汇总!

知识图谱构建过程是一个人机结合的不断迭代过程&#xff0c;以机器自动学习为主、专家定义与修正结合。需要人工介入的工作包括Schema定义、部分结构化知识准备、机器学习结果校验&#xff0c;依据用户的反馈、语料的增加与更新&#xff0c;不断进行模型的更新与迭代。 专业领域…

最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主

源码简介&#xff1a; 最新网课搜题神器小程序源码&#xff0c;它是仿了小猿题库&#xff0c;功能多&#xff0c;能很快速找网课答案&#xff0c;还自带流量主功能。 这个小程序类似小助手&#xff0c;一键搜题就有答案。而且支持激励视频流量主&#xff0c;能轻松变现。 源…

三点估算法-系统架构师(七十五)

1关于网络存储的叙述&#xff0c;正确的是&#xff08;&#xff09;。 A DAS支持完全跨平台的文件共享&#xff0c;支持所有操作系统 B NAS通过SCSI连接至服务器&#xff0c;通过服务器网卡在网络上传输数据 C FC SAN的网络介质为光纤通道&#xff0c;而IP SAN使用标准的以太…

C语言复习概要(四)

本文 1. 操作符的分类算术操作符关系操作符逻辑操作符 2. 二进制制和进制转换二进制与十六进制的表示进制转换算法 3. 原码、反码和补码原码反码补码 1. 操作符的分类 C语言中的操作符种类繁多&#xff0c;常用的主要操作符可以按照其功能进行如下分类&#xff1a; 算术操作符…

【机器学习-无监督学习】概率图模型

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

【Java】String 类详解:字符串操作的必备知识

&#x1f4c3;个人主页&#xff1a;island1314 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1 基本概念 java.lang.String 类用于描述字符串&#xff0c;Java程序中所有的字…

LeetCode讲解篇之79. 单词搜索

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历对矩阵中的每个点&#xff0c;对每个点采用深度优先搜索&#xff0c;检查是否能以当前点做为开头来匹配word 我们使用一个与矩阵相同规格的二维数组表示矩阵中对应的点是否被访问过&#xff0c;防止重复…

html+css+js实现Switch开关

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Switch…

优化阶乘求和

题目&#xff1a;求 的值。 思路&#xff1a;循环n次&#xff0c;每次求每一项的值&#xff0c;并加起来&#xff0c;求每一项的值需要求阶乘&#xff0c;而阶乘的时间复杂度为O(n)&#xff0c;所有总的时间复杂度为O(n^2)。所以这个方法不好。 优化&#xff1a;求每一项的值不…

华为OD机试 - 九宫格游戏(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

麒麟 操作系统介绍| 银河麒麟和中标麒麟操作系统| Kylin 麒麟iso 镜像下载地址 银河麒麟操作系统v10 |

目录 #申请试用小技巧&#xff0c; 所有麒麟系列的版本如下 详细介绍如下&#xff1a; 银河麒麟高级服务器操作系统 V10 1. 龙芯-MIPS64el 版 2. 申威版 3. 兆芯版 4. 海光版 5. 飞腾版 6. 鲲鹏版 7. AMD64版 8. 龙芯-LoongArch64 版 9. ARM64版 银河麒麟桌面操作…

BGP路由原理详解

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 一. BGP简介: 二. BGP报文中的角色 BGP的报文 BGP处理过程 BGP有限状态机 BGP属性 三. BGP作用 四. BGP选路 ​…

120页PPT企业对标管理指导:对标具有全球竞争力的世界一流企业

国有企业管理提升与对标管理是提升企业竞争力、实现可持续发展的重要途径。以下是对国有企业管理提升路线与对标管理的详细分析&#xff1a; 一、国有企业管理提升路线 明确战略定位&#xff1a; 根据市场需求和资源状况&#xff0c;确定企业的核心业务和发展方向。制定科学…

使用 docker-compose 启动 es 集群 + kibana

编写 docker-compose yaml version: v3 services:elasticsearch-node1:image: elasticsearch:7.17.24container_name: elasticsearch-node1ports:- "9200:9200"- "9300:9300"environment:- node.nameelasticsearch-node1- cluster.namemy-es-cluster- dis…