Azure Cosmos DB – CRUD ejemplo práctico
Azure Cosmos Db es una base de datos no relacional utilizada cuando tenemos múltiples objetos que pueden tener propiedades dinámicas, es decir, que pueden tener todas o algunas de las propiedades. Los objetos que guardamos no contienen una estructura definida pero si un mismo tipo y además se guardan en formato JSON:
Ejemplo Práctico
A lo largo de este post expondré un ejercicio práctico para poder visualizar el funcionamiento de Azure Cosmos Db. Para ello utilizaremos Visual Studio Enterprise (código) y el portal de Azure. El ejemplo consta en la creación de una base de datos de películas, listaremos todos los objetos existentes y seremos capaces de crear, ver detalles , modificar y eliminar películas. A lo largo de la explicación observaremos como podemos crear objetos dinámicos que tendrán un mismo tipo pero es posible que no todos tengan la misma cantidad de propiedades.
Acceso al portal y al menú de Cosmos Db: primero debemos abrir el portal de Azure y en el buscador escribimos: Azure Cosmos Db (como se puede ver en la foto ya tengo creado dos ejemplos). Una vez que estamos allí podremos observar que contamos con un menú que permite agregar, eliminar, etc.
Creación del recurso Cosmos Db películas: pulsamos sobre el botón agregar y veremos que nos aparecerá una ventana la cual iremos completando: agregaremos un grupo de recursos (recuerda que esto permite un mayor orden a la hora de crear recursos). En mi caso trabajaré sobre la carpeta «PostAzure», añadimos un nombre de cuenta y completamos los demás campos como se observa en la foto y pulsamos en revisar y crear:
Cuando la revisión sea correcta pulsamos en crear:
Recuperar las claves de acceso del recurso: antés de comenzar con el código es importante apuntar la uri de nuestro recurso así como también la PrimaryKey que nos permitirán el acceso posteriormente por código. En nuestro menú localizamos el apartado «claves»:
Pulsamos sobre claves y veremos un apartado donde esta la URI y otro apartado que tiene la PrimaryKey, apuntamos dichas claves:
Una vez que ya hemos creado el recurso en el portal de Azure vamos a realizar una aplicación NET Core en la cual tendremos una vista index.cshtml con un botón (realizar acciones Cosmos Db) que ejecutará las primeras acciones de la aplicación que será crear la BBDD de películas e insertar 2 películas para poder tener datos en la misma. A partir de esto podremos realizar las distintas acciones de crear, ver detalles, modificar y eliminar.
Instalación de NuGets: sobre el proyecto hacemos click derecho y pulsamos sobre «Administrar paquetes NuGet» e instalamos los siguientes NuGets:
Creación de la clase Pelicula (modelo): sobre el proyecto creamos una carpeta llamada Models y dentro de la misma una clase llamada Pelicula con 5 propiedades y un método que se encargará de serializar los objetos:
Configuración de la clase appsettings.json: aquí es donde colocaremos la Uri que previamente guardamos y la PrimaryKey para poder tener acceso al recurso. Posteriormente, en la creación de la clase service utilizaremos IConfiguration para poder acceder a estas claves:
Creación clase Service: sobre el proyecto creamos la carpeta Service y dentro una clase llamada «ServiceCosmosDb» (debemos hacer los using necesarios de los NuGets):
Creación de CosmosController: una vez ya tenemos listas la clase del modelo y el service, haremos el CosmosController e inyectaremos la clase del Service en el constructor de esta clase. Haremos las llamadas a cada uno de los métodos del service:
Creación de las vistas Index, Create, Editar, Detalles, ListPeliculas: una vez listo el contolador, crearemos nuestras vistas, en mi caso he utilizado el atajo de creación de vistas con Razor + el tipo de acción que vayamos a necesitar + el uso del modelo:
El controlador posee métodos Post y dichos métodos reciben un objeto de tipo película por lo cual estamos utilizando el model binding y es así que en las vistas que haya formularios es importante que el atributo «name» de los input se correspondan al mismo nombre que figura en la clase Pelicula.
Creamos Index.cshtml:
Creamos ListPeliculas.cshtml:
Creamos Create.cshtml:
Creamos Edit.cshtml:
Creamos la vista Detalles.cshtml:
Resolvemos dependencias: finalmente debemos resolver las dependencias en la clase Startup:
Resultado: ejecutamos la apliación:
Para finalizar este post quiero volver a recordaros la importancia de que los name de los controles HTML se correspondan con los nombres presentes en el modelo de la clase Pelicula ya que si no el model binding no funcionará y verificar que las claves que os apuntéis del recurso sean las correctas. Espero que este post os haya sido útil.
Autor/a: María Victoria Castro Dotta Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma Centro: Tajamar Año académico: 2020-2021 Código / recursos utilizados / Otros datos de interés: código realizar Azure Cosmos Db