Jak pracować z LiteDB w C #

LiteDB to szybka, prosta, bezkonfiguracyjna, wbudowana baza danych NoSQL dla .Net. Jest to dobry wybór w przypadku prostych aplikacji (internetowych, mobilnych lub stacjonarnych), w których może być potrzebny jeden plik danych na użytkownika, ale nie trzeba obsługiwać wielu współbieżnych operacji zapisu. W tym artykule omówiono, jak możemy pracować z tą bazą danych przy użyciu języka C #.

Zanim zaczniemy korzystać z LiteDB, przyjrzyjmy się niektórym koncepcjom. LiteDB pracuje z dokumentami i zbiorami. Dokumenty służą do przechowywania i pobierania danych do iz pliku danych. Zwróć uwagę, że definicja dokumentu może być klasą POCO lub klasą BsonDocument. Tak czy inaczej, LiteDB przekonwertuje dokument do formatu BSON, zanim zostanie zapisany w bazie danych.

LiteDB organizuje dokumenty w magazynach dokumentów zwanych kolekcjami. Nawiasem mówiąc, każda kolekcja ma unikalną nazwę i zawiera jeden lub więcej dokumentów, które mają ten sam schemat. Aby pracować z dokumentami, możesz skorzystać z metod zbierania. Oto lista metod, których możesz użyć:

  • Insert— Służy do dodawania nowego dokumentu do kolekcji
  • Update— Służy do aktualizacji istniejącego dokumentu
  • Delete— Służy do usuwania dokumentu
  • FindByIdlub Find- używane do przeszukiwania dokumentu
  • Include- służy do wypełniania właściwości z innych kolekcji
  • EnsureIndex—Służy do tworzenia nowego indeksu, jeśli nie istnieje

Ponieważ LiteDB jest bazą danych bez serwera, nie musisz jej instalować w swoim systemie. Po prostu dodaj odniesienie do pliku LiteDB.dll w swoim projekcie. Alternatywnie możesz zainstalować LiteDB za pośrednictwem Menedżera pakietów NuGet w programie Visual Studio lub wpisując następujące polecenie w narzędziu wiersza polecenia Menedżera pakietów NuGet.

> Install-Package LiteDB

Utwórz klasę POCO w LiteDB w C #

Utwórz nowy projekt aplikacji konsolowej w programie Visual Studio i zapisz go pod nazwą. Stwórzmy teraz klasę POCO, której użyjemy do stworzenia silnie wpisanego dokumentu. Zauważ, że powinniśmy mieć Idnazwaną właściwość w naszej klasie, aby pracować z LiteDB. Alternatywnie możemy również ozdobić [BsonId]atrybutem dowolną właściwość w naszej klasie . Oto Authorklasa, której użylibyśmy w tym przykładzie.

Klasa publiczna Autor

    {

        public int Id {get; zestaw; }

        public string FirstName {get; zestaw; }

        public string LastName {get; zestaw; }

    }

IdNieruchomość powinna być unikalna i nie jest pusta. Jeśli pozostawisz właściwość Id pustą, LiteDB automatycznie wygeneruje Idpodczas wstawiania rekordu.

Wstaw rekord w LiteDB w C #

Poniższego fragmentu kodu można użyć do utworzenia nowego Authorwystąpienia i wstawienia rekordu.

przy użyciu (var db = new LiteDatabase (connectionString))

    {

       var collection = db.GetCollection („autorzy”);

       var author = nowy autor

         {

             Imię,

             Nazwisko,

             Adres

          };

         collection.Insert (autor);

     }

Zapoznaj się z powyższym fragmentem kodu. Zwróć uwagę, jak nowe wystąpienie LiteDatabasejest tworzone przez przekazanie parametrów połączenia jako parametru. Poniższa instrukcja pobiera kolekcję lub tworzy nową kolekcję, jeśli żadna nie istnieje. Wywołanie Insertmetody w instancji kolekcji automatycznie generuje wartość Idwłaściwości i wstawia dokument do bazy danych.

Zapytanie do LiteDB w C #

Po wstawieniu nowego rekordu do bazy danych możesz wysłać do niego zapytanie, jak pokazano w poniższym fragmencie kodu.

przy użyciu (var db = new LiteDatabase (connectionString))

   {

     var collection = db.GetCollection („autorzy”);

     var autor = kolekcja.FindById (1);

     Console.WriteLine (autor.FirstName + „\ t” + autor.LastName);

   }

Zauważ, że FindByIdmetoda zwraca dokument według jego Idlub indeksu klucza podstawowego. Możesz jawnie utworzyć indeks, korzystając z EnsureIndexmetody pokazanej poniżej.

autorzy.EnsureIndex („FirstName”);

Zaktualizuj dokument w LiteDB w C #

Aktualizacja dokumentu jest prosta. Wystarczy zmienić wartości właściwości, a następnie wywołać Updatemetodę w wystąpieniu kolekcji, jak pokazano poniżej.

var autor = kolekcja.FindById (1);

author.Address;

collection.Update (autor);

Jeśli chcesz znaleźć wszystkich autorów, którzy mieszkają w określonej lokalizacji, możesz użyć następującego zapytania.

var results = kolekcja.Find (x => x.Address.Contains („Hyderabad”));

Istnieje inna klasa o nazwie, LiteRepositoryktóra nieco ułatwia wykonywanie operacji CRUD. Oto przykład, który ilustruje, jak możesz użyć tej klasy.

przy użyciu (var db = new LiteRepository (connectionString))

            {

                db.Insert (nowy autor

               { Imię Nazwisko,

               Adres });

            }

Praca z plikami w LiteDB

LiteDB udostępnia FileStoragekolekcję do pracy z plikami. Przesyłanie lub pobieranie plików jest proste. Wszystko, co musisz zrobić, to wywołać odpowiednią metodę w FileStoragekolekcji, jak pokazano w poniższych fragmentach kodu. Aby przesłać plik:

db.FileStorage.Upload („Autor-Zdjęcie”, @ ”C: \ Temp \ Joydip.jpg”); // Przesyła plik do bazy danych
Aby pobrać plik:
db.FileStorage.Download („Autor-Zdjęcie”, @ ”C: \\ Joydip.jpg”); // Pobiera plik do systemu plików

Należy zauważyć, że LiteDB tworzy dwie kolekcje do pracy z plikami. Należą do nich _filesi _chunks. Kolekcja _files zawiera informacje związane z metadanymi pliku i _chunkszawiera dane, które są odpowiednio podzielone na potrzeby przechowywania.