[C#] 一個輕量化的Database - LiteDB 關於 Transation 的測試 Commit , Rollback

2024-01-30

最近依然在測試 LiteDB,今天要測試的是 Transaction ,在 LiteDB 中 Transaction 其實很簡單的

跟傳統在寫 SQL Server 的 Transaction 設計的很像,我網路上查了一下文件,其實到 v5 之後版本寫法變得比較穩定

今天就簡單的記錄一下 



[C#] 一個輕量化的Database - LiteDB 各種查詢姿勢

2024-01-29

最近因為在測試 LiteDB ,所以這邊筆記幾個查詢方法,可以方便自己之後可以快速的回憶起來要怎麼寫

下面主要就是列舉幾種查詢資料的方法,最後一個測試比較久因為我查詢了 物件中的 List<Object> 

裡面的屬性並且使用 %LIKE% 



[C#] 一個輕量化的Database - LiteDB 關於 BsonValue 轉回物件問題

今天來說一個在嘗試 LiteDB 的時候遇到的錯誤,因為該套件的底層是使用 BSON ,所以在還原回物件的時候

他預設都是 LiteDB.BsonValue  ,因為我直接下一個查詢語法後直接使用 Json.NET , SerializeObject 的時候直接出現錯誤

Unhandled exception. Newtonsoft.Json.JsonSerializationException: Error getting value from 'AsBoolean' on 'LiteDB.BsonValue'.

 ---> System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Boolean'.

   at lambda_method23(Closure, Object)

   at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)

   --- End of inner exception stack trace ---


[C#] 一個輕量化的Database - LiteDB的簡介與使用

2024-01-26

我自己本人因為 SQL 沒有寫的很好,所以很喜歡 NoSQL ,最近在看一些範例都會使用一套  DB 叫做 LiteDB

想說趁機會就玩玩看,基本上他官方上是寫基於 NoSQL 的結構,而且與 .NET 高度親和所以就順手研究一下

用起來頗為順手,對於一些小專案我想我會使用這優先於 SQLite 



[C#] .NET8 - SHA3-256 操作遭遇的平台問題

2024-01-25

最近在看 .NET 8 新功能,最近好像多了 SHA3_256 ,因為之前在弄區塊鏈的東西,其實都是使用套件

BouncyCastle  套件,但是現在 .NET 8 好像已經內建有支援,想說來測試一下,結果出現了

Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform.

at System.Security.Cryptography.SHA3_256.TryHashData(ReadOnlySpan`1 source, Span`1 destination, Int32& bytesWritten)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source, Span`1 destination)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source)

at System.Security.Cryptography.SHA3_256.HashData(Byte[] source)




[C#] .NET8 - Dictionary、FrozenDictionary、HashTable的性能對決

2024-01-24

最近在看 .NET 8 新功能,有一個東西有點興趣 就是 FrozenDictionary ,想說他跟傳統的 Dictionary 有啥不同

畢竟 .NET 8  是以輾壓級效能做為賣點 ,看了一下官方這段話的介紹

以效能為焦點的類型.NET 8 引進數種旨在改善應用程式效能的新類型。 新的 System.Collections.Frozen 命名空間包含集合類型和 FrozenDictionaryFrozenSet

這些類型不允許在集合建立之後對索引鍵和值進行任何變更。 該需求允許更快速的讀取作業(例如, TryGetValue() )。

這些類型特別適用于第一次使用時填入的集合,然後在長期服務期間持續保存

感覺使用上就是拿來可以放在記憶體中快速索引的好東西,直接用 BenchmarkDotNet 跑一下



當麻許的超技八 2014 | Donma Hsu Design.