.NET

ASP.NET Core CRUD con NoSQL: Parte 2

CRUD significa Crear, Leer, Actualizar y Eliminar. En la parte 2, veremos R para Read, y construiremos un endpoint ASP.NET Core para leer datos de Couchbase usando SQL.

Asegúrese de leer parte 1 de esta serieque cubre la instalación y configuración de su proyecto ASP.NET Core "wishlist".

SQL++ para leer

Couchbase es única entre las bases de datos NoSQL en el sentido de que admite un implementación completa de SQL (llamado SQL++, de soltera N1QL) para consultar datos JSON.

SQL++ no es un lenguaje "tipo SQL" diluido. Con SQL++, dispone de Se une a, CTEs/WITH, ACTUALIZACIÓN, INSERTAR, BORRAR, FUSIONAR, agregación/GROUP BY, INICIO/COMPROMISO/RETROCESOy mucho más.

Además (el "++"), también dispone de funciones para tratar datos JSON, como FALTA, NEST, Funciones ARRAY_*, Funciones OBJECT_*y mucho más.

Para esta sencilla aplicación CRUD, utilizaremos un SQL++ SELECCIONE consulta (e índice) para devolver todos artículos de mi lista de deseos.

Escribir su primera consulta SQL

En primer lugar, vamos a intentar escribir una consulta SQL++ para obtener todos los elementos de la lista de deseos en la carpeta Workbench de consulta Capella.

Para empezar, inténtalo:

Al hacerlo, debería aparecer un mensaje de error. Algo como:

Este es el comportamiento esperado. (La mayoría) de las consultas SQL++ en Couchbase no se ejecutarán a menos que haya al menos un índice disponible para ellas.

No hay problema. Cree un sencillo ÍNDICE PRIMARIO con un comando como este:

Por lo general, los índices primarios no están pensados para ser utilizados en un entorno de producción típico, pero son muy útiles para un entorno de desarrollo, ya que garantizan que cualquier La consulta SQL++ se ejecutará en la colección indexada (aunque no será tan eficiente como una colección indexada correctamente). Una vez que empiece a crear consultas SQL++ más complejas, puede utilizar la función Botón "Aconsejar" en el Query Workbench para obtener sugerencias de índices más eficientes para crear (y usted debe evitar el uso de SELECCIONAR * siempre que puedas 😆).

Después de crear el índice, vuelva a intentar lo anterior SELECCIONE y los resultados serán los siguientes:

Ya casi está. Trate de imaginar esta matriz de objetos que se serializa a un C# Lista. No funcionaría del todo, porque los objetos están anidados con el nombre de la colección. Así que me he acostumbrado a poner alias a las colecciones, así:

Lo que produce el resultado:

Se ve bien, pero todavía falta algo. ¿Dónde están esos GUIDs que usamos para las claves de los documentos? Couchbase no los almacena como datos; los almacena como metadatos. SQL++ proporciona la META() para consultar metadatos. Utilice META().id así:

Y que finalmente nos da un resultado de:

Esto se serializará muy bien en WishlistItem utilizando la clase creada en la parte 1.

Uso de SQL++ en ASP.NET Core

Pongamos esa consulta SQL++ que acabamos de escribir en un endpoint ASP.NET Core.

En GiftsControllercree un endpoint llamado GetAll:

Para ejecutar SQL++, necesitamos obtener un objeto de tipo Grupo. SQL++ se ejecuta a nivel de cluster (no de bucket, ni de scope, ni de colección, ya que puede necesitar ÚNASE A/UNIÓN entre ellos). Podríamos volver atrás y añadir ClusterProvider como parámetro del constructor. Si este endpoint fuera a funcionar sólo con SQL++, sería una buena idea. Sin embargo, sigamos con lo que creamos en la parte 1. Tenemos un objeto de tipo BucketProvider. A partir de ese objeto, se puede obtener un objeto de tipo Grupo:

A grupo es la forma en que ASP.NET Core interactuará con un clúster Couchbase de diversas maneras. Por ahora, estamos interesados en su QueryAsync método:

Asegúrese de que dispone de lo siguiente utilizando en la parte superior de su GiftsController.cs file:

Una cosa más a tener en cuenta. Cuando se ejecuta SQL++, hay una serie de opciones de coherencia (escaneado). El valor por defecto es ConsistenciaEscaneo.NotBounded. Esta configuración significa que el motor de consulta no esperar a que los índices terminen de actualizarse antes de devolver los resultados. Esta es la opción más eficaz. Sin embargo, en algunas situaciones, querrás una mayor consistencia en los índices. Couchbase proporciona SolicitarPlus y AtPlus.

Pruebe el punto final de ASP.NET Core

Desde Visual Studio, Ctrl+F5 iniciará la aplicación. Deberías ver una página OpenAPI / Swagger en tu navegador.

ASP.NET app reading from Couchbase

(Ignorar Previsión meteorológicaque viene con la plantilla de Visual Studio).

Haga clic en el punto final para probarlo. No hay parámetros que especificar, así que simplemente haga clic en Ejecute.

Testing an ASP.NET endpoint and Couchbase

Ahora tiene la "R" de CRUD en su lugar.

¿Y ahora qué?

El proyecto ASP.NET Core está conectado a Couchbase Capella, y está leyendo datos a través de SQL++.

En la próxima entrada del blog, crearemos otro punto final de "lectura". En lugar de SQL++, veremos otra forma más rápida de acceder a los datos y leerlos.

Mientras tanto, deberías:

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Author

Posted by Matthew Groves

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.