公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

使用 C# 和 LiteDB 嵌入式NoSQL 數據庫

admin
2024年8月13日 21:7 本文熱度 1365

LiteDB 是一個輕量、快速、嵌入式的 NoSQL 數據庫。它不需要服務器,適用于桌面、移動應用以及小型 Web API 項目,本人在一些小項目中比較喜歡使用。本文將介紹 LiteDB 的主要特點以及如何在 C# 中使用 LiteDB,通過完整的例子展示常見的數據庫操作。

LiteDB 主要特點

  • 無需服務器:LiteDB 運行于單一 DLL 中,不需要復雜的服務器配置。

  • 輕量級:數據庫文件小巧,適用于資源受限的環境。

  • 嵌入式:LiteDB 直接嵌入到應用程序中。

  • NoSQL:基于 BSON(二進制 JSON 序列化協議)存儲數據。

  • 簡單易用:通過簡單的 API 實現 CRUD 操作。

  • 支持 LINQ:方便的數據查詢與操作支持。


安裝 LiteDB

首先,通過 NuGet 包管理器安裝 LiteDB。可以在 Visual Studio 的包管理控制臺中輸入以下命令:

Install-Package LiteDB


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

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

快速開始

我們將通過一個簡單的 C# 控制臺應用展示如何使用 LiteDB 實現基本的 CRUD(創建、讀取、更新、刪除)操作。

1. 創建實體類

首先,我們需要定義一個實體類。例如,我們要在數據庫中存儲用戶信息,定義如下:

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

2. 插入數據

插入數據是基本的數據庫操作,我們首先創建 LiteDatabase 實例,然后獲取集合并插入數據。

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 = "[email protected]" };        users.Insert(user);
       Console.WriteLine("User inserted with Id: " + user.Id);    }}

3. 查詢數據

LiteDB 提供了簡單的查詢接口,可以使用 LINQ 查詢或通過 BsonExpression 指定查詢條件。

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}");        }    }}

4. 更新數據

可以根據 Id 或其他條件查找并更新現有的記錄。

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 = "[email protected]";            users.Update(user);
           MessageBox.Show("User updated");        }    }}

5. 刪除數據

可以根據 Id 或其他條件刪除記錄。

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 接口。這使我們能夠以更抽象的方式處理數據存儲庫,并方便以后進行擴展。

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> 接口。

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實體的數據庫操作。

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 = "[email protected]" };        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 = "[email protected]";        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");        }    }}

結論

LiteDB 是一個非常實用且易于使用的嵌入式 NoSQL 數據庫,適用于小型項目和快速開發。在 C# 中使用 LiteDB 非常簡單且高效,通過簡單的 API,我們可以方便地進行數據存儲和查詢。本文介紹了 LiteDB 的基本特點,并通過完整的例子展示了如何進行 CRUD 操作,幫助開發者快速上手。


該文章在 2024/8/19 18:43:32 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 高清日韩热门电影免费手机在线观看 | 国产精品成aⅴ人片在线观看 | 国产毛片日韩精品无码 | 国产成人亚洲精品无码青青草原 | 91麻豆精品国产自产在线观 | 18国产精品白浆在线观看免费 | 18禁美女裸体网站 | 国产精品欧美亚洲制服 | 99久久国产精品免费热日韩 | 国产97视频人人做人人爱 | 国产尤物亚洲av无码精品色区 | 国产99久9在线视频 国产99久9在线视频传媒 | av色国产色拍 | 国产美女作爱在线观看 | 国产自慰在线免费观看 | 国产成人丝袜网站在线观看 | 国产美女极度色诱视频ww | 国产精品毛片更新无码 | 国产精品无码免费视频三四区 | 国产成人综合一区精品 | 国产精品高清一区二区不卡片 | 国产超级乱婬视频免费 | 二区啪视频 | 9191精品国产免费久久 | av中文字幕一区二区三区久久 | 国产成人午夜在线视频a站 国产成人午夜在线视频极速观看 | 成人午夜精品一级毛片免费网站 | 国产精品毛片在线大全 | 国产成人久久精品二三区无码 | 国产精品亚洲综合一区在线观看 | 国产黄色视频在线播放 | 国产午夜精品福利久久 | 99国产精品国产 | 国产亚洲午夜精品视频 | 国产午夜精品理论片影院 | 国产午夜精品毛片不卡 | 二区欧美无遮挡中文字幕人成人 | 91av观看| 国产女同调教 | 国产美女一级性大黄片 | 国产一区二区三区不卡精品 |