jueves, 7 de mayo de 2020

MongoDB y C#

Vamos a crear una aplicación en VS2019 MVC que pueda conectarse de manera fácil a una base de datos de mongo.

Para este ejemplo vamos a utilizar una base de datos de Atlas que nos permite tener una sola de 500MB gratis. Ya si se desea tener mayor capacidad o más bases de datos se requiere de pagar por el uso de estas.

Bueno en este momento vamos a crear una aplicación de MVC con VS2019.

Después de crear el proyecto nuevo debemos instalar los siguientes paquetes desde Nuget



Lo que tenemos que hacer ahora es crear un folder nuevo llamado Repository. En este folder vamos a crear las clases necesarias para poder interactuar con nuestra base de datos. Primero desarrollaremos una interfaz con los métodos base para las operaciones sobre la base de datos, estas operaciones serian buscar documento, borrar documento, actualizar documento y agregar documentos. El nombre de nuestra interfaz seria IMongoInteraction.

Para poder construir el código necesario de cada una operación debemos crear una clase llamada MongoInteraction esta clase debe implementar la interfaz. Dentro de esta clase vamos a construir el código necesario para poder interactuar con la base de datos.

Nosotros vamos a trabajar con un documento que lo podemos definir en una clase POCO que en nuestro caso llamamos MongoDocument (esta puede tener cualquier otro nombre). Para este ejemplo la clase no tiene propiedades, sin embargo, para poder trabajar ya con mongo debemos agregar las propiedades que deseamos guardar en los documentos.

MongoInteraction requiere un constructor el cual nos permite inicializar la conexión de la base de datos, agregar el nombre de nuestra base de datos y la colección que deseamos usar para manipular los documentos.

 

En este momento la manipulación de los documentos es muy fácil y siempre vamos a utilizar el objeto _collection que ya tiene todo lo necesario para poder trabajar sobre la colección de datos.

Como podemos observar en la línea 23 para borrar un documento hacemos uso de _collection y el método DeleteOneAsync, este ultimo requiere de un filtro para saber cuales datos queremos borrar. Lo mismo con el método de buscar lo único que se necesita es el filtro. Ahora para poder crear un documento debemos crear un objeto de la clase MongoDocument (POCO) que tiene los atributos del documento y enviar esto al método InsertOneAsync. Finalmente, el método para actualizar o remplazar un documento requiere primero el filtro del documento que deseamos reemplazar y la información del nuevo documento que se quiere usar de ahora en adelante. Ya con esto podemos hacer las operaciones en la colección de mongo.

 

Ahora nos vamos a ir al controlador Home donde vamos a ver como llamar las operaciones para trabajar con nuestra base de datos. En la línea 17 creamos una variable que nos permite manejar la clase con las operaciones en todo el controlador. Como se puede ver en el constructor de la clase se pasa por referencia un objeto de tipo IMongoInteraction, este es el que se asigna en la línea 23.

Con todo esto preparados seguimos a la línea 26 donde tenemos un método llamado Index. Aquí se puede observar en la línea 29 como creamos el filtro para cargar datos de nuestra colección de mongo. Se define el filtro y se pasa al método de buscar en la línea 30. Este nos debe retornar un objeto de tipo MongoDocument. Para cualquier otra operación se debe crear un filtro igual que en la línea 29 claro cambiando lo que se desea filtrar, es decir, cualquier otra propiedad o propiedades.

Nos queda pendiente un último paso para poder utilizar mongo, el cual debemos desarrollar en la clase Startup

En este paso se debe agregar la línea 24 donde usando la variable service agregamos un objeto de IMongoInteraction, esto usando el método AddSingleton. Nada mas recordar que para este objeto se debe pasar la conexión string para nuestro ejemplo lo estamos llamando del appsettings.

De esta manera tenemos una aplicación web con acceso a una base de datos de mongodb.


Ejemplo


Etiquetas: , , ,

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio