欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

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

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 = "johndoe@example.com" };        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 = "john.doe@newdomain.com";            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 = "janedoe@example.com" };        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 = "jane.doe@newdomain.com";        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