国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網站長春網站建設惠州網絡推廣平臺

網站長春網站建設,惠州網絡推廣平臺,網站建設項目計劃書如何寫,西安seo優(yōu)化培訓本文主要是使用異步方式,體驗 litedb 基本的 crud 操作。 LiteDB 是一款輕量級、快速且免費的 .NET NoSQL 嵌入式數據庫,專為小型本地應用程序設計。它以單一數據文件的形式提供服務,支持文檔存儲和查詢功能,適用于桌面應用、移動…

本文主要是使用異步方式,體驗 litedb 基本的 crud 操作。

LiteDB 是一款輕量級、快速且免費的 .NET NoSQL 嵌入式數據庫,專為小型本地應用程序設計。它以單一數據文件的形式提供服務,支持文檔存儲和查詢功能,適用于桌面應用、移動應用和小型 Web 應用等場景。

LiteDB 的主要特點包括:

  • 無服務器的 NoSQL 文檔存儲LiteDB 是一個嵌入式數據庫,無需獨立服務器,數據存儲在一個單一文件中,類似于 SQLite。
  • 簡單易用的 APILiteDB 提供類似 MongoDB 的簡單 API,支持 LINQ 查詢和 SQL-like 命令,使得開發(fā)者可以輕松上手。
  • 線程安全和 ACID 事務支持:LiteDB 支持線程安全操作和完整的 ACID 事務處理,確保數據的一致性和完整性。
  • 數據恢復功能LiteDB 使用寫前日志(WAL)機制來保證數據恢復能力,即使在寫入失敗的情況下也能恢復數據。
  • 跨平臺支持LiteDB 可以在 Windows、Linux 和 macOS 等多個平臺上運行,具有良好的跨平臺兼容性。
  • 加密存儲LiteDB 支持使用 DESAES 加密算法對數據文件進行加密,保障數據的安全性。
  • 文件和流數據存儲LiteDB 支持存儲文件和流數據,類似于 MongoDBGridFS 功能。
  • 開源免費LiteDB 是一個開源(MIT)項目,任何人都可以使用和修改其代碼,并且完全免費,包括商業(yè)用途。

LiteDB 的使用非常簡單,可以通過 NuGet 包管理器輕松安裝,并且提供了豐富的文檔和示例代碼幫助開發(fā)者快速上手。此外,LiteDB 還提供了一個名為 LiteDB Studio 的圖形用戶界面工具,方便用戶管理和可視化數據庫內容。

總之,LiteDB 是一款功能強大、易于使用的 NoSQL 數據庫解決方案,適用于多種場景,值得開發(fā)者關注和嘗試。

使用 .NET CLI 創(chuàng)建一個控制臺應用程序,可以按照以下步驟進行:

  1. 安裝 .NET 9 SDK:首先,確保你已經安裝了 .NET 9 SDK。你可以從官方網站下載并安裝最新版本的 .NET SDK。

  2. 創(chuàng)建新的控制臺應用程序:使用 dotnet new console 命令創(chuàng)建一個新的控制臺應用程序。這個命令會生成一個包含基本結構的項目文件夾。

dotnet new console -n LiteDBExample
  1. 導航到項目目錄:進入剛剛創(chuàng)建的項目目錄。
 cd LiteDBExample
  1. 運行應用程序:使用 dotnet run 命令運行應用程序。
dotnet run

基礎控制臺項目就創(chuàng)建好了,絲滑般體驗;

接下來我們使用 litedb 提供的 nuget 包,進行簡單的封裝,構建出異步操作的 crud 方法 。

  • 安裝相關 nuget 包:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net9.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="LiteDB" Version="5.0.21" /><PackageReference Include="LiteDB.Async" Version="0.1.8" /><PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" /></ItemGroup></Project>
  • 創(chuàng)建實體類型 :Person
public class Person
{public Guid Id { get; set; } = Guid.NewGuid();public string Name { get; set; } = default!;public uint Age { get; set; }
}
  • 定義倉儲類規(guī)范:IRepository
using LiteDB;namespace LiteDBExample.Core.Interfaces;public interface IRepository<TEntity> where TEntity : class
{Task<BsonValue> AddAsync(TEntity entity);Task<int> AddRangeAsync(IEnumerable<TEntity> entities);Task<IEnumerable<TEntity>> GetAllAsync();Task<TEntity?> GetByIdAsync(object id);Task<bool> UpdateAsync(TEntity entity);Task<int> UpdateRangeAsync(IEnumerable<TEntity> entities);Task<bool> DeleteAsync(object id);Task<int> DeleteRangeAsync(IEnumerable<object> ids);
}
  • 實現(xiàn) PersonDbContext
using LiteDB;
using LiteDB.Async;
using LiteDBExample.Core.Entities;namespace LiteDBExample.Data;public class PersonDbContext(string connectionString) : IDisposable
{private readonly LiteDatabaseAsync _database = new(connectionString);public Task<BsonValue> AddAsync(Person person){var collection = _database.GetCollection<Person>("people");return collection.InsertAsync(person);}public Task<int> AddRangeAsync(IEnumerable<Person> persons){var collection = _database.GetCollection<Person>("people");return collection.InsertAsync(persons);}public Task<IEnumerable<Person>> GetAllAsync(){var collection = _database.GetCollection<Person>("people");return collection.FindAllAsync();}public Task<Person?> GetByIdAsync(object id){BsonValue bsonId = new(id);var collection = _database.GetCollection<Person>("people");return collection.FindByIdAsync(bsonId);}public Task<bool> UpdateAsync(Person person){var collection = _database.GetCollection<Person>("people");return collection.UpdateAsync(person);}public Task<int> UpdateRangeAsync(IEnumerable<Person> persons){var collection = _database.GetCollection<Person>("people");return collection.UpdateAsync(persons);}public Task<bool> DeleteAsync(object id){BsonValue bsonId = new(id);var collection = _database.GetCollection<Person>("people");return collection.DeleteAsync(bsonId);}public Task<int> DeleteRangeAsync(IEnumerable<object> ids){var collection = _database.GetCollection<Person>("people");return collection.DeleteManyAsync(a => ids.Contains(a.Id));}public void Dispose(){_database.Dispose();}
}
  • 定義 Person 類倉儲:IPersonRepository
using LiteDBExample.Core.Entities;
using LiteDBExample.Core.Interfaces;namespace LiteDBExample.Repositories;public interface IPersonRepository : IRepository<Person>
{
}
  • 實現(xiàn) Person 類倉儲:PersonRepository
using LiteDB;
using LiteDBExample.Core.Entities;
using LiteDBExample.Data;namespace LiteDBExample.Repositories;public class PersonRepository(PersonDbContext context) : IPersonRepository
{private readonly PersonDbContext _context = context ?? throw new ArgumentNullException(nameof(context));public Task<BsonValue> AddAsync(Person entity){return _context.AddAsync(entity);}public Task<int> AddRangeAsync(IEnumerable<Person> entities){return _context.AddRangeAsync(entities);}public Task<IEnumerable<Person>> GetAllAsync(){return _context.GetAllAsync();}public Task<Person?> GetByIdAsync(object id){return _context.GetByIdAsync(id);}public Task<bool> UpdateAsync(Person entity){return _context.UpdateAsync(entity);}public Task<int> UpdateRangeAsync(IEnumerable<Person> entities){return _context.UpdateRangeAsync(entities);}public Task<bool> DeleteAsync(object id){return _context.DeleteAsync(id);}public Task<int> DeleteRangeAsync(IEnumerable<object> ids){return _context.DeleteRangeAsync(ids);}
}
  • Program.cs 中應用 IPersonRepository
using LiteDBExample.Core.Entities;
using LiteDBExample.Repositories;
using Microsoft.Extensions.DependencyInjection;
using LiteDBExample.Data;namespace LiteDBExample;internal class Program
{static async Task Main(string[] args){Console.WriteLine("Hello, LiteDB!");var services = new ServiceCollection();ConfigureServices(services);using var serviceProvider = services.BuildServiceProvider();var personRepository = serviceProvider.GetRequiredService<IPersonRepository>();// 多個 Personvar newPeople = new List<Person>{new Person { Name = "John Kiny", Age = 16 },new Person { Name = "John Doe", Age = 30 },new Person { Name = "Jane Smith", Age = 28 },new Person { Name = "Alice Johnson", Age = 35 }};try{Console.WriteLine("===> litedb Async Method Test");{// 添加單個 Personvar person = new Person { Name = "Alice Array", Age = 32 };var bsonId = await personRepository.AddAsync(person);Console.WriteLine($"bsonId={bsonId}");// 查詢單個 Personvar queryPerson = await personRepository.GetByIdAsync(bsonId);Console.WriteLine($"guid={queryPerson.Id}, {queryPerson.Name} is {queryPerson.Age} years old.");// 更新單個 Personperson.Age += 1;person.Name = "Array";var updateCount = await personRepository.UpdateAsync(person);Console.WriteLine($"updateCount={updateCount}");// 刪除單個 Personvar deleteCount = await personRepository.DeleteAsync(bsonId);Console.WriteLine($"deleteCount={deleteCount}");// 批量添加多個 Personint addRange = await personRepository.AddRangeAsync(newPeople);Console.WriteLine($"addRange={addRange}");// 查詢所有 Personvar people = await personRepository.GetAllAsync();foreach (var p in people){Console.WriteLine($"guid={p.Id}, {p.Name} is {p.Age} years old.");}// 批量更新多個 Personvar updatedPeople = people.Select(p => new Person { Id = p.Id, Name = p.Name, Age = p.Age + 1 });int updateRows = await personRepository.UpdateRangeAsync(updatedPeople);Console.WriteLine($"updateRows={updateRows}");// 批量刪除多個 Personvar idsToDelete = new List<object>();foreach (var item in people.Select(p => p.Id)){idsToDelete.Add(item);};var ids = idsToDelete.AsEnumerable();int deleteRows = await personRepository.DeleteRangeAsync(ids);Console.WriteLine($"deleteRows={deleteRows}");}Console.ReadLine();}catch (Exception ex){Console.WriteLine($"An error occurred: {ex.Message}");}}private static void ConfigureServices(IServiceCollection services){services.AddScoped<IPersonRepository, PersonRepository>();services.AddScoped<PersonDbContext>(provider => new PersonDbContext("filename=litedb_example.db"));}
}
  • 運行應用:dotnet run

dotnet run

  • 使用 LiteDB.Studio 工具查看 litedb 數據;

當批量添加數據的時候,查看數據信息如下:

  • Grid 查看

litedb-select-grid

  • Text 查看

litedb-select-text

從上圖中可以看到 litedb_example.db 文件非常輕量,大概 30kb 左右;

http://aloenet.com.cn/news/30592.html

相關文章:

  • 網站制作怎樣做背景贛州seo唐三
  • 網站建設公司相關資質精準客源app
  • 做百度網上搜索引擎推廣最好網站杭州seo網站排名優(yōu)化
  • 攝影網站建設內容網站運營一個月多少錢
  • 怎么做網站多少錢蘇州網站制作推廣
  • 做網站劃算還是做app劃算營銷型網站和普通網站
  • 做模版網站打開百度網站首頁
  • 優(yōu)化網站哪家好競價排名是按照什么來計費的
  • 視頻網站seo實戰(zhàn)免費私人網站建設軟件
  • 中山建設監(jiān)理有限公司 網站如何提高網站的搜索排名
  • wordpress上傳函數四川seo哪里有
  • 很好用的炫酷WordPress主題上海seo顧問
  • dede新聞網站源碼營銷課程培訓視頻
  • 晉州做網站響應式模版移動優(yōu)化
  • 建材公司網站建設方案點擊器 百度網盤
  • 深圳官方網站設計長沙網站策劃
  • 太原營銷網站建設制作平臺網站監(jiān)測
  • 學網站開發(fā)培訓班seo為什么要進行外部優(yōu)化
  • 網站建設源代碼上傳百度網頁怎么制作
  • 企業(yè)網站制作簡介bt螞蟻
  • 深圳網絡公司做網站臺州網站seo
  • 一對一直播軟件開發(fā)夫唯老師seo
  • 購物網站最重要的功能我要登錄百度
  • 保定哪做網站好企業(yè)查詢信息平臺
  • 做網站切圖網址怎么申請注冊
  • 黃山做網站公司關鍵詞搜索神器
  • 建網站比較靠譜的公司新媒體營銷推廣方案
  • 泰安網站制作服務2000元代理微信朋友圈廣告
  • 更改wordpress主題百度關鍵詞優(yōu)化多久上首頁
  • 專門做二手書網站或app百度云搜索引擎入口網盤搜索神器