狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

使用 C# 和 LiteDB 嵌入式NoSQL 數(shù)據(jù)庫(kù)

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

LiteDB 是一個(gè)輕量、快速、嵌入式的 NoSQL 數(shù)據(jù)庫(kù)。它不需要服務(wù)器,適用于桌面、移動(dòng)應(yīng)用以及小型 Web API 項(xiàng)目,本人在一些小項(xiàng)目中比較喜歡使用。本文將介紹 LiteDB 的主要特點(diǎn)以及如何在 C# 中使用 LiteDB,通過(guò)完整的例子展示常見的數(shù)據(jù)庫(kù)操作。

LiteDB 主要特點(diǎn)

  • 無(wú)需服務(wù)器:LiteDB 運(yùn)行于單一 DLL 中,不需要復(fù)雜的服務(wù)器配置。

  • 輕量級(jí):數(shù)據(jù)庫(kù)文件小巧,適用于資源受限的環(huán)境。

  • 嵌入式:LiteDB 直接嵌入到應(yīng)用程序中。

  • NoSQL:基于 BSON(二進(jìn)制 JSON 序列化協(xié)議)存儲(chǔ)數(shù)據(jù)。

  • 簡(jiǎn)單易用:通過(guò)簡(jiǎn)單的 API 實(shí)現(xiàn) CRUD 操作。

  • 支持 LINQ:方便的數(shù)據(jù)查詢與操作支持。


安裝 LiteDB

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

Install-Package LiteDB


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

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

快速開始

我們將通過(guò)一個(gè)簡(jiǎn)單的 C# 控制臺(tái)應(yīng)用展示如何使用 LiteDB 實(shí)現(xiàn)基本的 CRUD(創(chuàng)建、讀取、更新、刪除)操作。

1. 創(chuàng)建實(shí)體類

首先,我們需要定義一個(gè)實(shí)體類。例如,我們要在數(shù)據(jù)庫(kù)中存儲(chǔ)用戶信息,定義如下:

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

2. 插入數(shù)據(jù)

插入數(shù)據(jù)是基本的數(shù)據(jù)庫(kù)操作,我們首先創(chuàng)建 LiteDatabase 實(shí)例,然后獲取集合并插入數(shù)據(jù)。

private void btnInsert_Click(object sender, EventArgs e){    // 連接數(shù)據(jù)庫(kù)(若文件不存在會(huì)自動(dòng)創(chuàng)建)    using (var db = new LiteDatabase(@"MyData.db"))    {        // 獲取 User 集合(若不存在會(huì)自動(dòng)創(chuàng)建)        var users = db.GetCollection<User>("users");
       // 創(chuàng)建新的 User 對(duì)象并插入集合        var user = new User { Name = "John Doe", Email = "johndoe@example.com" };        users.Insert(user);
       Console.WriteLine("User inserted with Id: " + user.Id);    }}

3. 查詢數(shù)據(jù)

LiteDB 提供了簡(jiǎn)單的查詢接口,可以使用 LINQ 查詢或通過(guò) BsonExpression 指定查詢條件。

private void btnSearch_Click(object sender, EventArgs e){    // 連接數(shù)據(jù)庫(kù)    using (var db = new LiteDatabase(@"MyData.db"))    {        var users = db.GetCollection<User>("users");
       // 通過(guò) Id 查詢單個(gè)用戶        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. 更新數(shù)據(jù)

可以根據(jù) Id 或其他條件查找并更新現(xiàn)有的記錄。

private void btnUpdate_Click(object sender, EventArgs e){    // 連接數(shù)據(jù)庫(kù)    using (var db = new LiteDatabase(@"MyData.db"))    {        var users = db.GetCollection<User>("users");
       // 通過(guò) Id 查找用戶并更新        var user = users.FindById(1);        if (user != null)        {            user.Email = "john.doe@newdomain.com";            users.Update(user);
           MessageBox.Show("User updated");        }    }}

5. 刪除數(shù)據(jù)

可以根據(jù) Id 或其他條件刪除記錄。

private void btnDelete_Click(object sender, EventArgs e){    // 連接數(shù)據(jù)庫(kù)    using (var db = new LiteDatabase(@"MyData.db"))    {        var users = db.GetCollection<User>("users");
       // 通過(guò) Id 刪除用戶        bool success = users.Delete(1);        if (success)        {            MessageBox.Show("User deleted");        }    }}

定義 IDataRepository 接口

首先,我們定義一個(gè)通用的 IDataRepository 接口。這使我們能夠以更抽象的方式處理數(shù)據(jù)存儲(chǔ)庫(kù),并方便以后進(jìn)行擴(kuò)展。

public interface IDataRepository<T>{    void Insert(T entity);    T GetById(int id);    IEnumerable<T> GetAll();    void Update(T entity);    bool Delete(int id);}

實(shí)現(xiàn) UserRepository 類

接下來(lái),我們實(shí)現(xiàn)一個(gè) UserRepository 類來(lái)處理 User 實(shí)體的數(shù)據(jù)庫(kù)操作。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 類

有了數(shù)據(jù)倉(cāng)儲(chǔ)類之后,我們可以在應(yīng)用程序中使用 UserRepository 來(lái)進(jìn)行User實(shí)體的數(shù)據(jù)庫(kù)操作。

private void btnRepository_Click(object sender, EventArgs e){    // 數(shù)據(jù)庫(kù)文件路徑    string databasePath = @"MyData.db";
   using (var userRepository = new UserRepository(databasePath))    {        // 插入數(shù)據(jù)        var newUser = new User { Name = "Jane Doe", Email = "janedoe@example.com" };        userRepository.Insert(newUser);        MessageBox.Show($"User inserted with Id: {newUser.Id}");
       // 查詢數(shù)據(jù)        var user = userRepository.GetById(newUser.Id);        if (user != null)        {            MessageBox.Show($"User found: {user.Name}, {user.Email}");        }
       // 更新數(shù)據(jù)        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}");        }
       // 刪除數(shù)據(jù)        if (userRepository.Delete(user.Id))        {            MessageBox.Show("User deleted");        }    }}

結(jié)論

LiteDB 是一個(gè)非常實(shí)用且易于使用的嵌入式 NoSQL 數(shù)據(jù)庫(kù),適用于小型項(xiàng)目和快速開發(fā)。在 C# 中使用 LiteDB 非常簡(jiǎn)單且高效,通過(guò)簡(jiǎn)單的 API,我們可以方便地進(jìn)行數(shù)據(jù)存儲(chǔ)和查詢。本文介紹了 LiteDB 的基本特點(diǎn),并通過(guò)完整的例子展示了如何進(jìn)行 CRUD 操作,幫助開發(fā)者快速上手。


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