Comment travailler avec LiteDB en C #

LiteDB est une base de données NoSQL intégrée rapide, simple et sans configuration pour .Net. C'est un bon choix pour les applications simples (Web, mobile ou bureau) où vous pouvez avoir besoin d'un fichier de données par utilisateur, mais pas besoin de prendre en charge de nombreuses opérations d'écriture simultanées. Cet article présente une vue d'ensemble de la façon dont nous pouvons travailler avec cette base de données en utilisant C #.

Avant de commencer à utiliser LiteDB, jetons un coup d'œil à certains des concepts. LiteDB fonctionne avec des documents et des collections. Les documents sont utilisés pour stocker et récupérer des données vers et depuis un fichier de données. Notez que la définition de votre document peut être une classe POCO ou une classe BsonDocument. Dans tous les cas, LiteDB convertira votre document au format BSON avant qu'il ne soit stocké dans la base de données.

LiteDB organise les documents dans des magasins de documents appelés collections. Incidemment, chaque collection est identifiée par un nom unique et contient un ou plusieurs documents qui partagent le même schéma. Pour travailler avec des documents, vous pouvez profiter des méthodes de la collection. Voici la liste des méthodes que vous pouvez utiliser:

  • Insert—Utilisé pour ajouter un nouveau document à la collection
  • Update—Utilisé pour mettre à jour un document existant
  • Delete—Utilisé pour supprimer un document
  • FindByIdou - Findutilisé pour interroger un document
  • Include: Utilisé pour remplir les propriétés d'autres collections
  • EnsureIndex—Utilisé pour créer un nouvel index s'il n'existe pas

Étant donné que LiteDB est une base de données sans serveur, vous n'avez pas besoin de l'installer dans votre système. Vous ajoutez simplement une référence au fichier LiteDB.dll dans votre projet. Vous pouvez également installer LiteDB via le Gestionnaire de package NuGet dans Visual Studio ou en tapant la commande suivante dans l'outil de ligne de commande du Gestionnaire de package NuGet.

> Install-Package LiteDB

Créer une classe POCO dans LiteDB en C #

Créez un nouveau projet d'application console dans Visual Studio et enregistrez-le sous un nom. Créons maintenant une classe POCO que nous allons utiliser pour créer un document fortement typé. Notez que nous devrions avoir une Idpropriété nommée dans notre classe pour travailler avec LiteDB. Alternativement, nous pouvons également décorer n'importe quelle propriété de notre classe avec l' [BsonId]attribut. Voici la Authorclasse que nous utiliserions dans cet exemple.

public class Auteur

    {

        public int Id {get; ensemble; }

        chaîne publique FirstName {get; ensemble; }

        chaîne publique LastName {get; ensemble; }

    }

La Idpropriété doit être unique et non nulle. Si vous laissez la propriété Id vide, LiteDB générera automatiquement le Idlors de l'insertion d'un enregistrement.

Insérer un enregistrement dans LiteDB en C #

L'extrait de code suivant peut être utilisé pour créer une nouvelle Authorinstance et insérer un enregistrement.

en utilisant (var db = new LiteDatabase (connectionString))

    {

       var collection = db.GetCollection («auteurs»);

       var auteur = nouvel auteur

         {

             Prénom,

             Nom de famille,

             Adresse

          };

         collection.Insert (auteur);

     }

Reportez-vous à l'extrait de code ci-dessus. Notez comment une nouvelle instance de LiteDatabaseest créée en passant la chaîne de connexion en tant que paramètre. L'instruction suivante récupère une collection ou crée une nouvelle collection s'il n'en existe pas. L'appel à la Insertméthode sur l'instance de collection génère automatiquement la valeur de la Idpropriété et insère le document dans la base de données.

Requête LiteDB en C #

Maintenant que vous avez inséré un nouvel enregistrement dans la base de données, vous pouvez l'interroger comme indiqué dans l'extrait de code ci-dessous.

en utilisant (var db = new LiteDatabase (connectionString))

   {

     var collection = db.GetCollection («auteurs»);

     var auteur = collection.FindById (1);

     Console.WriteLine (author.FirstName + “\ t” + author.LastName);

   }

Notez que la FindByIdméthode renvoie le document par son Idindex ou par l'index de clé primaire. Vous pouvez créer explicitement un index à l'aide de la EnsureIndexméthode indiquée ci-dessous.

auteurs.EnsureIndex («FirstName»);

Mettre à jour un document dans LiteDB en C #

La mise à jour d'un document est simple. Vous modifiez simplement les valeurs de propriété, puis appelez la Updateméthode sur l'instance de collection comme indiqué ci-dessous.

var auteur = collection.FindById (1);

author.Address;

collection.Update (auteur);

Si vous souhaitez trouver tous les auteurs qui vivent dans un endroit particulier, vous pouvez utiliser la requête suivante.

var results = collection.Find (x => x.Address.Contains («Hyderabad»));

Il existe une autre classe appelée LiteRepositoryqui facilite un peu l'exécution des opérations CRUD. Voici un exemple qui illustre comment vous pouvez utiliser cette classe.

en utilisant (var db = new LiteRepository (connectionString))

            {

                db.Insert (nouvel auteur

               { Prénom nom de famille,

               Adresse });

            }

Travailler avec des fichiers dans LiteDB

LiteDB fournit la FileStoragecollection pour travailler avec des fichiers. Le téléchargement ou le téléchargement de fichiers est simple. Tout ce que vous avez à faire est d'appeler la méthode appropriée sur la FileStoragecollection, comme indiqué dans les extraits de code ci-dessous. Pour télécharger un fichier:

db.FileStorage.Upload ("Auteur-Photo", @ "C: \ Temp \ Joydip.jpg"); // Télécharge un fichier dans la base de données
Pour télécharger un fichier:
db.FileStorage.Download ("Auteur-Photo", @ "C: \\ Joydip.jpg"); // Télécharge un fichier dans le système de fichiers

Il convient de noter que LiteDB crée deux collections pour travailler avec des fichiers. Ceux-ci incluent _fileset _chunks. La collection _files contient des informations relatives aux métadonnées du fichier et _chunkscontient des données séparées de manière appropriée pour le stockage.