.NET

Couchbase com Windows e .NET - Parte 5 - ASP.NET CRUD

Esta é a última postagem do blog nesta série que apresenta Couchbase para desenvolvedores ASP.NET (ou vice-versa, dependendo de seu ponto de vista :). Estarei completando o aplicativo de amostra que estou criando com um conjunto completo de funcionalidades CRUD. O aplicativo já mostra uma lista de pessoas. Após esta publicação, você poderá adicionar uma nova pessoa por meio do aplicativo Web (em vez de diretamente no Console do Couchbase), editar uma pessoa e excluir uma pessoa.

Antes de começar, um aviso. Eu fiz algumas modelagens decisões neste aplicativo de amostra. Decidi que as chaves dos documentos Person devem ter o formato "Person::{guid}" e decidi que aplicarei o prefixo "Person::" no nível do repositório. Também decidi não usar nenhum modelo de visualização intermediário ou modelos de edição em meu aplicativo MVC, para fins de uma demonstração concisa. Você não precisa, de forma alguma, tomar as mesmas decisões que eu tomei! Incentivo-o a refletir sobre as implicações para seu caso de uso específico e fique à vontade para discutir os méritos e as compensações nos comentários.

Adição de um novo documento pessoal

Nas publicações anteriores do blog, adicionei novos documentos por meio do Console do Couchbase. Agora vamos tornar isso possível por meio de um formulário HTML padrão em uma página ASP.NET.

Primeiro, preciso fazer uma pequena alteração na classe Person:

Adicionei um campo "Id" e o marquei com a tag [Chave] attribute. Esse atributo vem de System.ComponentModel.DataAnnotations, mas o Linq2Couchbase o interpreta como "use esse campo para a chave do Couchbase".

Agora, vamos adicionar uma nova ação muito simples ao HomeController:

E vou criar um link para isso com a navegação bootstrap (que eu inseri anteriormente e que você não é obrigado a usar):

Como esse formulário fará um POST para uma ação Salvar, ela precisa ser criada em seguida:

Observe que o tipo Person usado no parâmetro é o mesmo tipo de antes. Aqui é onde um aplicativo da Web mais complexo provavelmente desejaria usar um modelo de edição, validação, mapeamento e assim por diante. Omiti tudo isso e enviei o modelo diretamente para um novo método no PersonRepository:

Esse método de repositório definirá o ID, se ele ainda não estiver definido (ele estará, quando falarmos sobre "Editar" mais tarde). O método "Save" do IBucketContext é do Linq2Couchbase. Ele adicionará um novo documento, se a chave não existir, ou atualizará um documento existente, se existir. Isso é conhecido como uma operação de "upsert". Na verdade, posso fazer quase a mesma coisa sem o Linq2Couchbase:

Edição de um documento pessoal existente

Agora, quero poder editar um documento de pessoa existente em meu site ASP.NET. Primeiro, vamos adicionar um link de edição a cada pessoa, fazendo uma alteração na exibição parcial _person.cshtml.

Novamente, estou usando o bootstrap aqui, o que não é necessário. Também adicionei um link "excluir" enquanto estava lá, que será abordado mais tarde. Mais um ponto a ser destacado: Ao criar o routeValues, retirei o "Person::" do Id. Se eu não fizer isso, o ASP.NET reclamará de uma solicitação HTTP potencialmente maliciosa. Provavelmente seria melhor dar a cada documento pessoal um "lesma" para usar na URL e, talvez, para usá-la também como chave do documento. Isso dependerá de você e do seu caso de uso.

Agora preciso de uma ação Edit no HomeController:

Estou reutilizando a mesma exibição Edit.cshtml, mas agora preciso adicionar um campo oculto para armazenar o ID do documento.

Pronto! Agora você pode adicionar e editar documentos pessoais.

Add or Edit a Person document

Isso pode não ser muito impressionante para aqueles que já estão familiarizados com o ASP.NET MVC. Então, a seguir, vamos dar uma olhada em algo interessante que um banco de dados NoSQL como o Couchbase traz para a mesa.

Iteração nos dados armazenados no documento pessoal

Quero coletar mais informações sobre uma pessoa. Digamos que eu queira obter um número de telefone e uma lista dos filmes favoritos dessa pessoa. Com um banco de dados relacional, isso significa que eu precisaria adicionar pelo menos duas colunas e, mais provavelmente, pelo menos uma outra tabela para conter os filmes, com uma chave estrangeira.

Com o Couchbase, não há um esquema explícito. Portanto, em vez disso, tudo o que preciso fazer é adicionar mais algumas propriedades à classe Person.

Também preciso adicionar uma interface de usuário correspondente. Usei um pouco de jQuery para permitir que o usuário adicionasse qualquer número de filmes. Não mostrarei o código aqui, pois os detalhes da implementação não são importantes. Mas criei todo o amostra disponível no Githubpara que você possa conferi-lo mais tarde, se desejar.

Iteration on Person with new UI form

Também preciso fazer alterações no _person.cshtml para exibir (condicionalmente) as informações extras:

Veja como isso ficaria (desta vez com dois documentos pessoais):

Iteration on Person with new UI display

Não precisei migrar um esquema SQL. Não precisei criar nenhum tipo de relacionamento de chave estrangeira. Não precisei configurar nenhum mapeamento OR/M. Simplesmente adicionei alguns campos novos e o Couchbase os transformou em um documento JSON correspondente.

Iteration on Person with new JSON document

Exclusão de um documento pessoal

Já adicionei o link "Excluir", então só preciso criar uma nova ação do Controller...

...e um novo método de repositório:

Observe que esse método não está usando o Linq2Couchbase. Ele está usando o método Remove do IBucket. Há um Remove disponível no IBucketContext, mas você precisa passar a ele um objeto, e não apenas uma chave. Optei por usar o IBucket, mas não há nada inerentemente superior nele.

Concluindo

Obrigado por ler esta série do blog. Esperamos que você esteja no caminho certo para considerar ou até mesmo incluir o Couchbase em seu próximo projeto ASP.NET. Aqui estão mais alguns links interessantes para você continuar sua jornada com o Couchbase:

  • Você pode se interessar pelo Provedor de identidade ASP.NET para Couchbase (github). Se você quiser armazenar informações de identidade no Couchbase, essa é uma maneira de fazer isso. No momento desta postagem no blog, é uma prévia para desenvolvedores e não há suporte para logins sociais.
  • O Linq2Couchbase é um projeto excelente com muitos recursos e documentação, mas ainda está em andamento. Se você estiver interessado, sugiro que visite Linq2Couchbase no Github. Faça perguntas no Gitter e sinta-se à vontade para enviar problemas ou solicitações pull.
  • Agora mesmo, O Couchbase está dando um prêmio de $500 para um uso criativo do Couchbase. Iterar neste exemplo do ASP.NET? Crie um plug-in para seu IDE favorito? Implemente a funcionalidade que está faltando no provedor de identidade ASP.NET? Você receberá alguns brindes apenas por participar.

Conclusão

Eu coloquei o código-fonte completo para este exemplo no Github.

O que eu deixei de fora? O que está impedindo você de experimentar o Couchbase com ASP.NET hoje? Por favor, deixe um comentário, me envie uma mensagem no Twitterou envie um e-mail para mim (matthew.groves AT couchbase DOT com). Gostaria muito de ouvir sua opinião.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Jennifer Garcia

Jennifer Garcia é gerente sênior de Web na Couchbase Inc. Como gerente do site, Jennifer tem a responsabilidade geral pelas propriedades do site, incluindo design, implementação, conteúdo e desempenho.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.