Permettre à une application .NET (WinUI, WPF, MAUI, etc.) de stocker et lire des données en local, de manière légère, sans serveur ni cloud c'est possible. Il existe des solutions simples et efficaces.
On comparera deux options :
- SQLite (base relationnelle, fichiers .db)
- LiteDB (base NoSQL en document, fichiers .db, purement C#)
🧩 Choisir entre SQLite et LiteDB
|
Critère
|
SQLite
|
LiteDB
|
|
Type
|
Relationnelle (SQL)
|
NoSQL (documents BSON)
|
|
API
|
System.Data.Sqlite
|
API 100% C#
|
|
Dépendances externes
|
Oui (DLL native)
|
Non (managed only)
|
|
Requête
|
SQL classique
|
LINQ ou requêtes LiteDB
|
|
Utilisation multiplateforme
|
Oui (via .NET 6/7/8/9)
|
Oui (entièrement managé)
|
|
Taille
|
Petite
|
Très petite
|
💾 Option 1 – Utiliser SQLite en C#
Installation
Ajoutez le package NuGet : Microsoft.Data.Sqlite
Selon la plateforme des packages spécifiques peuvent être nécessaires, regardez le site officiel Microsoft pour obtenir une information à jour au moment où vous en aurez besoin !
Exemple complet
using Microsoft.Data.Sqlite;
// Création et insertion
using var conn = new SqliteConnection("Data Source=donnees.db");
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = @"
CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, texte TEXT);
INSERT INTO messages (texte) VALUES ('Bonjour SQLite');
";
cmd.ExecuteNonQuery();
// Lecture
cmd.CommandText = "SELECT id, texte FROM messages";
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"[{reader.GetInt32(0)}] {reader.GetString(1)}");
}
📂 Option 2 – Utiliser LiteDB en C#
Installation
Ajoutez le package NuGet : LiteDB
Selon la plateforme des packages spécifiques peuvent être nécessaires, regardez le site officiel Microsoft pour obtenir une information à jour au moment où vous en aurez besoin !
Exemple complet
using LiteDB;
public class Message
{
public int Id { get; set; }
public string Texte { get; set; }
}
// Création / insertion
using var db = new LiteDatabase("donneesLite.db");
var col = db.GetCollection<Message>("messages");
col.Insert(new Message { Texte = "Bonjour LiteDB" });
// Lecture
var all = col.FindAll();
foreach (var msg in all)
{
Console.WriteLine($"[{msg.Id}] {msg.Texte}");
}
🖥️ Intégration dans une app UI
Les deux bases peuvent être utilisées dans des ViewModel, injectées via des services, ou encapsulées derrière des interfaces comme IRepository<T> pour découpler stockage et logique.
🧠 À retenir
- SQLite est universel, très connu, puissant pour requêtes complexes.
- LiteDB est 100% C#, ultra simple, sans dépendance native.
- Les deux peuvent être utilisés pour :
- stocker un historique
- enregistrer des préférences
- créer un cache local
- sauvegarder des résultats de traitement IA
Conclusion
Pour des apps desktop ou mobiles modernes qui ne veulent ni base distante, ni cloud, SQLite et LiteDB sont les alliés idéaux. Choisissez selon vos besoins : SQL structuré ou objets simples à manipuler, c'est à trancher selon le projet.