Primer contacto con LiteDB y .NET Core 2.0
Después de comentar en este blog hace unas semanas sobre LiteDB e indicar que haría algún ejemplo que nos ayudara a introducirnos en él, vamos a ponernos el mono de trabajo para ver un sencillo ejemplo de aplicación de consola, que trabaje con LiteDB y .NET Core.
Recordemos que hace también poco tiempo, ha sido publicado el último paquete de NuGet de LiteDB 4.0.0.
Una vez dicho esto, voy a utilizar Visual Studio Code para hacer este ejemplo de uso de LiteDB.
Para ello, iniciaré Visual Studio Code y utilizaré también el complemento C# Snippets for Visual Studio Code, algo que no es imprescindible pero que comento por si quieres seguir esta entrada al pie de la letra.
Una vez dicho esto, abriré una carpeta para crear el proyecto allí.
Crearemos un archivo que llamaremos por ejemplo myproject.cs.
Dentro de este fichero y en Visual Studio Code, utilizaremos el code snippet «csproj_2.0«, que nos creará la estructura general de un proyecto .NET Core 2.0.
Una vez hecho esto, renombraremos nuestro fichero myproject.cs a myproject.csproj.
De esta manera, tendremos nuestro archivo como un archivo de proyecto.
A continuación, crearemos un nuevo archivo que llamaremos por ejemplo Program.cs.
Dentro del mismo, utilizaremos el code snippet «#helloworld»
No olvides guardar todos los cambios realizados en Visual Studio Code.
Ahora, agregaremos a nuestro proyecto la librería de LiteDB, que cargaremos desde NuGet.
Para agregar un paquete NuGet desde Visual Studio Code, utilizaremos el terminal de Visual Studio Code (Ctrl+ñ en Windows) y escribiremos el comando:
dotnet add package LiteDB
Cuando finalice el proceso de instalación del paquete de LiteDB, estaremos preparados para escribir el código de nuestra aplicación.
Por lo tanto, a continuación modificaremos el contenido del fichero Program.cs por este otro:
using LiteDB; using System; using System.Linq; namespace ConsoleApp { public class Program { private const string DATABASE = "MyData.db"; private const string COLLECTION = "sites"; public static void Main(string[] args) { try { using(var db = new LiteDatabase(DATABASE)) { var sites = db.GetCollection<Site>(COLLECTION); InitializeData(); PrintAll(); var result = sites.Find(x => x.Name == ("Microsoft")).SingleOrDefault(); sites.Update(new Site() { Id = 2, Name = "Google" }); PrintAll(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } private static void InitializeData() { try { using(var db = new LiteDatabase(DATABASE)) { if (db.CollectionExists(COLLECTION)) db.DropCollection(COLLECTION); var sites = db.GetCollection<Site>(COLLECTION); sites.Insert(new Site() { Id = 1, Name = "Geeks.ms"}); sites.Insert(new Site() { Id = 2, Name = "Microsoft"}); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } private static void PrintAll() { using(var db = new LiteDatabase(DATABASE)) { var sites = db.GetCollection<Site>(COLLECTION); var results = sites.FindAll().ToList(); foreach(var element in results) { Console.WriteLine($"Id ({element.Id}) with Name {element.Name}"); } Console.WriteLine(); } } } public class Site { public int Id { get; set; } public string Name { get; set; } } }
Como podemos ver en el código, utilizaremos una clase Site que tendrá en este caso dos campos sencillos. El Id o identificador, y el Name o nombre del sitio.
Por otro lado, el método Main es el método de inicio de nuestra aplicación, y dentro de él hacemos varias acciones.
Inicializamos la base de datos, que es la comprobación de que la colección «sites» existe, y en su caso eliminamos la colección e insertamos dos registros en esa colección.
Mostramos los datos de la colección por pantalla.
Modificamos los datos de un registro de la colección.
Y volvemos a mostrar los datos de la colección por pantalla.
Como podemos apreciar, acciones de ida y vuelta pero muy sencillas.
Para ello, accedemos siempre a la base de datos, y desde ahí a la colección sobre la que queremos realizar una acción.
Podemos preguntar si una colección existe, o podemos eliminar una colección entera.
Y a través de una determinada colección seleccionada, podemos insertar registros, buscar todos los registros de una colección, buscar un elemento de una colección gracias a LINQ, o incluso actualizar un registro concreto o un conjunto de registros.
El código por sí sólo es bastante explicativo.
Si quieres acceder al ejemplo entero, podrás encontrarlo en mi repositorio de GitHub en este enlace.
¡Happy Coding!