• 一个小巧、快速、轻量级的 .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
        {
            /// 
            /// Id
            /// 
            public int Id { getset; }
    
            /// 
            /// Name
            /// 
            public string Name { getset; }
    
            /// 
            /// Age
            /// 
            public int Age { getset; }
    
            /// 
            /// Email
            /// 
            public string Email { getset; }
        }
    

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

    namespace LiteDBCwTest
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                //创建或打开数据库文件
                using (var db = new LiteDatabase(@"MyCustomerData.db"))
                {
                    // 获取集合(相当于表)
                    var collection = db.GetCollection("customers");
    
                    var customers = new List()
                    {
                        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

    DotNetGuide技术社区交流群

    • DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目推荐、招聘资讯和解决问题的平台。
    • 在这个社区中,开发者们可以分享自己的技术文章、项目经验、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
    • 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值和成长机会。

    欢迎加入DotNetGuide技术社区微信交流群👪

  • 相关阅读:
    TS学习4-模块化
    云原生周刊:Istio 1.19 发布 | 2023.9.11
    HTTP 介绍
    点击谷歌浏览器安装包没有反应
    欧拉计划Python解法(第1题-第5题)
    SpringBoot获取运行环境 获取静态配置 SpringBoot获取配置文件和属性值 springboot获取配置文件
    1.12 LaTex插入代码
    Linux系统常用命令总结-2022
    谷粒商城(一)
    MySQL出现“Lock wait timeout exceeded”错误的原因是什么?
  • 原文地址:https://www.cnblogs.com/Can-daydayup/p/17955585