Come lavorare con LiteDB in C #

LiteDB è un database NoSQL integrato per .Net veloce, semplice, a configurazione zero. È una buona scelta per applicazioni semplici (web, mobile o desktop) in cui potrebbe essere necessario un file di dati per utente ma non è necessario supportare molte operazioni di scrittura simultanee. Questo articolo presenta una panoramica su come possiamo lavorare con questo database usando C #.

Prima di iniziare a usare LiteDB, diamo un'occhiata ad alcuni concetti. LiteDB funziona con documenti e raccolte. I documenti vengono utilizzati per archiviare e recuperare i dati in e da un file di dati. Notare che la definizione del documento può essere una classe POCO o una classe BsonDocument. In ogni caso, LiteDB convertirà il tuo documento in formato BSON prima che venga memorizzato nel database.

LiteDB organizza i documenti all'interno di archivi di documenti noti come raccolte. Per inciso, ogni raccolta è identificata da un nome univoco e contiene uno o più documenti che condividono lo stesso schema. Per lavorare con i documenti, puoi sfruttare i metodi di raccolta. Ecco l'elenco dei metodi che puoi utilizzare:

  • Insert—Usato per aggiungere un nuovo documento alla raccolta
  • Update—Usato per aggiornare un documento esistente
  • Delete—Usato per eliminare un documento
  • FindByIdoppure Find—usato per interrogare un documento
  • Include—Utilizzato per popolare le proprietà di altre raccolte
  • EnsureIndex—Usato per creare un nuovo indice se non esiste

Poiché LiteDB è un database senza server, non è necessario installarlo nel sistema. Devi semplicemente aggiungere un riferimento al file LiteDB.dll nel tuo progetto. In alternativa, è possibile installare LiteDB tramite NuGet Package Manager in Visual Studio o digitando il comando seguente nello strumento della riga di comando di NuGet Package Manager.

> Install-Package LiteDB

Crea una classe POCO in LiteDB in C #

Crea un nuovo progetto di applicazione console in Visual Studio e salvalo con un nome. Creiamo ora una classe POCO che useremo per creare un documento fortemente tipizzato. Nota che dovremmo avere una Idproprietà denominata nella nostra classe per lavorare con LiteDB. In alternativa, possiamo anche decorare qualsiasi proprietà nella nostra classe con l' [BsonId]attributo. Ecco la Authorclasse che useremo in questo esempio.

public class Autore

    {

        public int Id {get; impostato; }

        stringa pubblica FirstName {get; impostato; }

        stringa pubblica LastName {get; impostato; }

    }

La Idproprietà deve essere univoca e non nulla. Se lasci vuota la proprietà Id, LiteDB genererà automaticamente il Idquando inserisci un record.

Inserisci un record in LiteDB in C #

Il seguente frammento di codice può essere utilizzato per creare una nuova Authoristanza e inserire un record.

utilizzando (var db = new LiteDatabase (connectionString))

    {

       var collection = db.GetCollection ("autori");

       var autore = nuovo autore

         {

             Nome di battesimo,

             Cognome,

             Indirizzo

          };

         collection.Insert (autore);

     }

Fare riferimento allo snippet di codice sopra. Notare come LiteDatabaseviene creata una nuova istanza di passando la stringa di connessione come parametro. La seguente istruzione recupera una raccolta o crea una nuova raccolta se non esiste. La chiamata al Insertmetodo sull'istanza di raccolta genera automaticamente il valore della Idproprietà e inserisce il documento nel database.

Query LiteDB in C #

Ora che hai inserito un nuovo record nel database, puoi interrogarlo come mostrato nello snippet di codice di seguito.

utilizzando (var db = new LiteDatabase (connectionString))

   {

     var collection = db.GetCollection ("autori");

     var author = collection.FindById (1);

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

   }

Si noti che il FindByIdmetodo restituisce il documento tramite il proprio Idindice di chiave primaria o. È possibile creare esplicitamente un indice utilizzando il EnsureIndexmetodo mostrato di seguito.

autori.EnsureIndex ("FirstName");

Aggiorna un documento in LiteDB in C #

L'aggiornamento di un documento è semplice. È sufficiente modificare i valori delle proprietà e quindi chiamare il Updatemetodo sull'istanza della raccolta come mostrato di seguito.

var author = collection.FindById (1);

autore.Indirizzo;

collection.Update (autore);

Se desideri trovare tutti gli autori che vivono in una determinata località, puoi utilizzare la seguente query.

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

C'è un'altra classe chiamata LiteRepositoryche rende un po 'più facile eseguire operazioni CRUD. Ecco un esempio che illustra come utilizzare questa classe.

utilizzando (var db = new LiteRepository (connectionString))

            {

                db.Insert (nuovo Autore

               { Nome e cognome,

               Indirizzo});

            }

Lavorare con i file in LiteDB

LiteDB fornisce la FileStorageraccolta per lavorare con i file. Il caricamento o il download di file è semplice. Tutto quello che devi fare è chiamare il metodo appropriato sulla FileStorageraccolta come mostrato negli snippet di codice di seguito. Per caricare un file:

db.FileStorage.Upload ("Autore-Foto", @ "C: \ Temp \ Joydip.jpg"); // Carica un file nel database
Per scaricare un file:
db.FileStorage.Download ("Autore-Foto", @ "C: \\ Joydip.jpg"); // Scarica un file nel file system

Va notato che LiteDB crea due raccolte per lavorare con i file. Questi includono _filese _chunks. La raccolta _files contiene informazioni relative ai metadati del file e _chunkscontiene dati suddivisi in modo appropriato per l'archiviazione.