首页 > 编程语言 >c# LiteDB的基础用法

c# LiteDB的基础用法

时间:2024-04-12 15:23:31浏览次数:27  
标签:c# cg db 应用程序 用法 LiteDB var public

LiteDB 是一个轻量级的嵌入式 NoSQL 数据库,其设计理念与 MongoDB 类似,但它是完全使用 C# 开发的,因此与 C# 应用程序的集成非常顺畅。与 SQLite 相比,LiteDB 提供了 NoSQL(即键值对)的数据存储方式,并且是一个开源且免费的项目。它适用于桌面、移动以及 Web 应用程序。

安装 LiteDB 包

你可以通过 NuGet 包管理器来安装 LiteDB:

Install-Package LiteDB

定义数据模型

定义一个 FileModel 类来表示文件信息:

using LiteDB;  
  
namespace YourNamespace  
{  
    [BsonCollection("files")] // 可以指定集合名称  
    public class FileModel  
    {  
        [BsonId] // 标记为主键  
        public int Id { get; set; }  
        
        public string Path { get; set; }  
    }  
}

数据访问服务类

创建一个 FileServices 类来封装对 LiteDB 的数据操作:

using LiteDB;

namespace UploadLogiData.LiteSql
{
    /// <summary>
    /// Logitech数据操作类
    /// </summary>
    public class FileServices
    {
        /// <summary>
        /// 定义数据库名称,文件在当前程序目录
        /// </summary>
        readonly string database = @"LogiDB.db";

        /// <summary>
        /// 打开一个表
        /// </summary>
        /// <returns></returns>
        public ILiteCollection<FileModel> GetCollection(LiteDatabase db)
        {
            return db.GetCollection<FileModel>("Files");
        }

        /// <summary>
        /// 插入数据(初始化)
        /// </summary>
        public void Initialize()
        {
            // 打开数据库 (如果不存在则创建)
            using (var db = new LiteDatabase(database))
            {
                var cg = GetCollection(db);
                cg.Delete(1);
                FileModel file = new FileModel
                {
                    Id = 1,
                    Path = @"C:\Users\ch190006\Desktop\Loginet\logs",
                };
                cg.Insert(file);
            }
        }

        /// <summary>
        /// 根据主键查询出配置单条数据
        /// </summary>
        /// <returns></returns>
        public FileModel GetSingle(int id)
        {
            using (var db = new LiteDatabase(database))
            {
                var cg = GetCollection(db);
                return cg.FindOne(p1 => p1.Id == id);
            }
        }

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="value">更新字段</param>
        public void UpdatePath(string value)
        {
            using (var db = new LiteDatabase(database))
            {
                var cg = GetCollection(db);
                // //查询到数据
                var data = cg.FindOne(p1 => p1.Id == 1);
                data.Path = value;
                // 当中数据库中查找到数据后,比如上面的data,可以直接修改后再更新。
                cg.Update(data);
            }
        }

    }
}

使用示例


using System;  
  
namespace YourNamespace  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
             FileServices file = new FileServices();
             file.Initialize();
             file.UpdatePath(textLog.Text);
             file.GetSingle(1).Path;
        }  
    }  
}

使用场景

  • 桌面应用程序:LiteDB 非常适合用于桌面应用程序,因为它是一个嵌入式数据库,可以轻松与应用程序一起打包和分发。它不需要单独的数据库服务器,简化了部署和配置
  • 移动应用程序:由于 LiteDB 的轻量级和嵌入式特性,它也适用于移动应用程序。开发者可以在移动设备上存储和检索数据,而无需依赖远程服务器。
  • 小型 Web 应用程序:对于需要轻量级数据存储解决方案的小型 Web 应用程序,LiteDB 是一个不错的选择。它易于设置和使用,且性能良好。
  • 原型设计和测试:在开发早期阶段或进行原型设计时,使用 LiteDB 可以快速搭建数据存储和检索功能,而无需投入大量时间设置和维护复杂的数据库系统。
  • 一个账户/用户一个数据库的数据存储
  • 本地缓存:在某些情况下,开发者可能希望将数据缓存在本地以提高性能或减少网络延迟。LiteDB 可以作为这种本地缓存的解决方案。

标签:c#,cg,db,应用程序,用法,LiteDB,var,public
From: https://www.cnblogs.com/ouyangkai/p/18131347

相关文章

  • 基于 Scriptable 从零开始美化iOS桌面(集合篇)
    Scriptable脚本合集iOS桌面组件神器(Scriptable)原创脚本,精美作品收集、分享!如果喜欢,欢迎点个⭐️Star⭐️给予小支持,感谢您的使用!喜欢这个项目?有好的脚本?请考虑留言来帮助完善它!如果您使用过程中发现有问题或可以改进的流程,请提出Issue或Pullrequest!......
  • mysql修改密码报错:Your password does not satisfy the current policy requirements
    参考https://blog.csdn.net/u013449046/article/details/106455041这是mysql初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。密码策略问题异常信息:ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequ......
  • tailwindcss/React 性能优化
    tailwindcssvscode空格才出提示https://v2ex.com/t/1027326#reply4"editor.quickSuggestions":{"strings":true}React性能优化实用技巧在开发React应用时,性能优化是一个永恒的话题。本文将分享几个实用的工具和技巧,帮助你提升React应用的性能。ReactDeveloperToo......
  • WDS故障排除 Script:X:\Deploy\Scripts\LiteTouch.wsf Code:80040049
    简介:不知道是因为微软换了咖喱程序员还是怎么了,居然有发布错误。还偷摸放GitHub的微软文档。memdocs/memdocs/configmgr/mdt/known-issues.mdatmain·MicrosoftDocs/memdocs(github.com)X:\Deploy\Scripts\LiteTouch.wsfScript:X:\Deploy\Scripts\LiteTouch.wsfCode......
  • 电脑开机时报错No Bootable Device找不到索引的解决方法
      本文介绍笔记本电脑出现NoBootableDevice错误提示,且无法开机的多种解决办法。1问题产生  最近,笔记本电脑正在正常使用时,突然蓝屏,出现你的设备遇到问题,需要重启。的提示;最下方的终止代码具体是CRITICAL_PROCESS_DIED还是SYSTEM_SERVICE_EXCEPTION有点记不太清楚了,不过这......
  • C# 构建具有多个字段的 GroupBy 表达式树
     publicstaticExpression<Func<T,object>>GroupByExpression<T>(string[]propertyNames){varproperties=propertyNames.Select(name=>typeof(T).GetProperty(name)).ToArray();varpropertyTypes=properties.Select(p=>p......
  • webpack优化
    编译优化1、使用缓存:缓存可以显著提高编译速度。例如,babel-loader的cacheDirectory选项可以将转译的结果缓存到文件系统中,此外,cache-loader可以将其他loader的处理结果缓存到磁盘。2、DLL动态链接库:DLL文件为动态链接库,在一个动态链接库中可以包含给其他模块调用的函数和数据。......
  • MySQL的CDC数据实时同步
    MySQL的CDC数据实时同步 背景近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一......
  • VSCode 如何删除无用的语言格式?
    1.情景展示在VisualStudioCode当中,支持很多语言格式。但问题在于,我只是将它当做NotePad++的替代品。当我通过Ctrl+N新建一个文件,并将指定的代码拷贝到VSCode中后,由于默认开启了自动检测语法功能。VSCode总是将java代码识别成Groovy语言,真他妈离谱。如何解决这个问题?2.......
  • 统一controller返回对象
    统一controller返回对象packagecom.xxx.jscaffold.handler;importcom.xxx.jscaffold.api.dto.common.Result;importorg.springframework.core.MethodParameter;importorg.springframework.http.MediaType;importorg.springframework.http.converter.HttpMessageConver......