CRUD significa Create (criar), Read (ler), Update (atualizar) e Delete (excluir). Na parte 2, veremos o R para leitura e criaremos um ponto de extremidade do ASP.NET Core para ler dados do Couchbase usando SQL.

Certifique-se de ler Parte 1 desta sérieque abrange a instalação e a configuração de seu projeto ASP.NET Core "wishlist".

SQL++ para ler

O Couchbase é único entre os bancos de dados NoSQL, pois oferece suporte a um implementação completa de SQL (chamado SQL++, também conhecido como N1QL) para consultar dados JSON.

O SQL++ não é uma linguagem "semelhante ao SQL" diluída. Com o SQL++, você tem JOINs, CTEs/com, ATUALIZAÇÃO, INSERIR, DELETE, MERGE, agregação/GROUP BY, BEGIN/COMMIT/ROLLBACKe muito mais.

Além disso (o "++"), você também tem recursos para lidar com dados JSON, como FALTANDO, NEST, Funções ARRAY_*, Funções OBJECT_*e muito mais.

Para este aplicativo CRUD simples, usaremos um aplicativo SQL++ SELECIONAR consulta (e índice) para retornar todos itens da minha lista de desejos.

Escrevendo sua primeira consulta SQL++

Primeiro, vamos tentar escrever uma consulta SQL++ para obter todos os itens da lista de desejos diretamente no Capella Query Workbench.

Para começar, tente:

Ao fazer isso, você deverá receber uma mensagem de erro. Algo como:

Esse é o comportamento esperado. (A maioria das) consultas SQL++ no Couchbase não será executada a menos que haja pelo menos um índice disponível para elas.

Não tem problema. Crie um ÍNDICE PRIMÁRIO com um comando como este:

Em geral, os índices primários não devem ser usados em um ambiente de produção típico, mas são muito úteis em um ambiente de desenvolvimento, pois garantem que qualquer A consulta SQL++ será executada na coleção indexada (embora não seja tão eficiente quanto uma coleção indexada corretamente). Quando você começar a criar consultas SQL++ mais complexas, poderá usar a função Botão "Advise" (Aconselhar) no Query Workbench para obter sugestões de índices mais eficientes a serem criados (e você deve evitar usar SELECT * sempre que puder 😆).

Depois de criar o índice, tente novamente o procedimento acima SELECIONAR novamente, e os resultados deverão ter a seguinte aparência:

Quase lá. Tente imaginar essa matriz de objetos sendo serializada em um C# Lista. Isso não funcionaria muito bem, porque os objetos são aninhados com o nome da coleção. Por isso, adquiri o hábito de colocar aliases nas coleções, assim:

O que produz o resultado:

Parece bom, mas ainda está faltando alguma coisa. Onde estão os GUIDs que usamos para as chaves do documento? O Couchbase não os armazena como dados; ele os armazena como metadados. O SQL++ fornece o META() para consultar metadados. Usar META().id assim:

E isso finalmente nos dá um resultado de:

Isso será serializado de forma adequada em Item da lista de desejos usando a classe criada na parte 1.

Usando o SQL++ no ASP.NET Core

Vamos colocar a consulta SQL++ que acabamos de escrever em um endpoint ASP.NET Core.

Em GiftsControllercrie um ponto de extremidade chamado Obter tudo:

Para executar o SQL++, precisamos obter um objeto do tipo Aglomerado. O SQL++ é executado no nível do cluster (e não do bucket, do escopo ou da coleção, pois pode ser necessário JUNTAR/UNIÃO entre eles). Poderíamos voltar e adicionar Provedor de cluster como um parâmetro do construtor. Se esse endpoint fosse funcionar apenas com o SQL++, seria uma boa ideia. No entanto, vamos nos ater ao que criamos na parte 1. Temos um objeto do tipo Provedor de balde. A partir desse objeto, você pode obter um objeto do tipo Aglomerado:

A agrupamento é como o ASP.NET Core interagirá com um cluster do Couchbase de várias maneiras. Por enquanto, estamos interessados em seu objeto QueryAsync método:

Certifique-se de que você tenha o seguinte usando na parte superior de seu GiftsController.cs file:

Mais um aspecto a ser observado. Ao executar o SQL++, há uma série de Opções de consistência (digitalização). O padrão é ScanConsistency.NotBounded. Essa configuração significa que o mecanismo de consulta não esperar que os índices terminem de ser atualizados antes de retornar os resultados. Essa é a opção de melhor desempenho. Entretanto, em algumas situações, você desejará uma consistência de índice mais forte. O Couchbase fornece RequestPlus e AtPlus.

Experimente o ponto de extremidade do ASP.NET Core

No Visual Studio, Ctrl+F5 iniciará o aplicativo. Você deverá ver uma página OpenAPI / Swagger no navegador.

ASP.NET app reading from Couchbase

(Ignorar Previsão do tempoque veio com o modelo do Visual Studio).

Clique no endpoint para experimentá-lo. Não há parâmetros a serem especificados, portanto, basta clicar em Executar.

Testing an ASP.NET endpoint and Couchbase

Agora você tem o "R" de CRUD no lugar.

O que vem a seguir?

O projeto ASP.NET Core está conectado ao Couchbase Capella e está lendo dados via SQL++.

Na próxima postagem do blog, criaremos outro endpoint de "leitura". Em vez de SQL++, analisaremos outra maneira mais rápida de acessar e ler dados.

Nesse meio tempo, você deve:

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixar uma resposta