C#: PostgreSQL e .NET Core 2.1

Certas vezes é inviável contar com um banco de dados pago quando o projeto está iniciando. Mas nem por isso não será preciso que seja um repositório de dados profissional. Portanto, neste artigo ensino como usar o banco de dados relacional PostgresSQL com o .NET Core 2.1, ainda usando Entity Framework Core e Migrations.

Antes de começar você vai precisar:

  1. Ter o PostgreSQL instalado, com a senha do localhost como 123456,
  2. Ter o Visual Studio Code intalado,
  3. Ter o .NET Core 2.1 SDK instalado.

Criando o projeto

Crie uma pasta vazia chamada PostgreSqlNetCore e dentro dela crie uma outra chamada src. E na pasta raíz, crie o arquivo da solução, usando o comando:

Abra a a pasta src e crie dentro dela a pasta PostgreSqlNetCore.Domain, e neste diretório execute o comando abaixo para criar o projeto do domínio:

Crie uma pasta chamada Entities, e adicione duas classes, uma de pessoa e outra de categoria.

Agora vamos criar o projeto que conterá nossa camada de acesso a dados, migrations e CRUD. Abra a a pasta src e crie dentro dela a pasta PostgreSqlNetCore.Infra.Data, e neste diretório execute o comando abaixo para criar o projeto de domínio:

Instale os pacotes conforme a seguir:

Npgsql.EntityFrameworkCore.PostgreSQL

Microsoft.Extensions.Configuration.FileExtensions

Microsoft.Extensions.Configuration.Json

Adicione a referência ao projeto de domínio, com o comando:

Crie uma pasta chamada Context, e adicione uma classe chamada PostgreSqlContext.

Abra a a pasta src e crie dentro dela a pasta PostgreSqlNetCore.Prompt, e neste diretório execute o comando abaixo para criar o projeto de domínio:

Instale o pacote Microsoft.EntityFrameworkCore.Design.

Adicione referência ao projeto de Dados.

Na raiz do projeto, adicione um arquivo chamado appsettings.json, e altere conforme a seguir:

Adicione ainda na raiz do projeto a classe DesignTimeDbContextFactory.

Agora é preciso associar todos os projetos na solução, e para isso, abra a pasta raiz no terminal, e execute os comando a seguir:

Agora é só executar o comando para criar a migração.

E então atualizar o banco de dados.

E enfim podemos ver o banco de dados com as nossas tabelas criadas e o versionamento das migrations.

Acesse o repositório no githus deste projeto no link a seguir:

https://github.com/tiagopariz/PostgreSqlNetCore

Obrigado, e até a próxima.

GitHub: criando um Fork e enviando um Pull Request

Já pensou em contribuir com aquele projeto bacana opensource e deixar sua marca, mostrando que você é uma pessoa aberta a interagir com a comunidade de desenvolvimento? Pois bem, neste artigo vou mostrar como criar um fork de um repositório do GitHub, e depois enviar a contribuição para o autor aprovar. Para nosso exemplo vou usar o projeto Flunt do André Baltieri para sugerir uma alteração.

Primeiro, vamos no repositório do Flunt, no perfil do André, acessando https://github.com/andrebaltieri/Flunt, e então vamos clicar em fork, que irá criar uma cópia de todo o projeto em um repositório na minha conta.

Aguarde o processo terminar.

Agora eu tenho um cópia do projeto em um repositório próprio, onde posso fazer todas as alterações na branch master que eu quiser.

Antes de prosseguir, é preciso criar clone local, clicando em Clone or download, e copiando a URL.

Agora vamos criar um clone no meu computador, usando o comando do Git e para isso abra o Git Bash e cole o endereço, como o exemplo a seguir.

Obs.: Se você for repetir o tutorial, use seus dados de usuário do seu repositório.

Acesse a pasta e abra no Visual Studio o projeto, e abra a classe Notifiable.cs, e nela vamos alterar o trecho de código destacado da linha 12.

Onde temos a variável somente leitura de notifications:

Vamos alterar a declaração usando a sintaxe chamada expression-bodied property, como segue:

Agora vamos fazer upload da alteração via comando do Git, usando a sequência que segue.

Na tela a seguir é mostrado todos os comandos, desde o acesso à pasta até o envio do código.

Abra o o seu repositório pelo site do GitHub, no meu caso, acessando https://github.com/tiagopariz/flunt e clique em Pull requests, em seguida em create a pull request.

Em Comparing changes, clique em compare across forks e por fim clique em Create pull request.

Em Open a pull request, confira a descrição e adicione informações adicionais se assim for necessário, e finalmente clique em Create a pull request.

A alteração será enviado ao dono do repositório, com os detalhes do que irá mudar. 

Pronto, agora é só esperar a aprovação.

Entity Framework: migrations com vários projetos e bancos de dados

Quando trabalhamos com soluções grandes, onde há vários projetos e cada um tem sua própria base de dados, assim como seu próprio versionamento usando Migrations do Entity Framework, fica meio complicado ficar alterando o Set as startup project e o Default Project na janela do Package Manager Console. Então, o ideal é apontar os projetos de configuração e dados na mesma linha de comando do Add-Migration e Update-Database.

Atualizando o banco de dados

Quando abrimos uma projeto que já tem migrations, precisamos atualizar o banco de dados, e para isso usamos o comando Update-Database. Mas podemos ser mais específico, e não precisar escolher nada em tela para que ele saiba onde achar a Connection String e Contexto, usando o comando abaixo.

Update-Database

Este comando atualiza o banco de dados com a ultima versão das migrations registradas, assim como roda algum Seed que pode popular tabelas.

-ProjectName

Nome do projeto onde está a configuração das entidades que representam os objetos do banco de dados, ou os DbSets.

-StartUpProjectName

O projeto que contém a Connection String para conexão com o banco de dados.

-ConfigurationTypeName

Nome completo, incluindo as namespaces, da entidade de configuração das migrations. Este arquivo é aquele que é gerado automaticamente ao usar o comando Enable-Migrations para ativar as migrações.

-Verbose

Este parâmetro exibe na tela todas as alterações efetuadas, assim como configurações definidas nos parâmetros anteriores.

Adicionando uma nova migração

Após atualizar o banco de dados, fazer as alterações nos objetos de domínio, precisamos adicionar a migração para depois enviar ao banco de dados as alterações versionadas, e novamente, é preciso que não precisemos definir o projeto de inicialização e dados. Para isso, use o comando a seguir:

Além dos parâmetros -ProjectName, -StartUpProjectName e -ConfigurationTypeName que já foram explicados no tópico anterior, precisamos incluir o parâmetro -Name e definir um nome que identifique qual alteração será feita no banco de dados.

Após adicionar a migration, só é preciso digitar o comando Update-Database com os parâmetros corretos.

Visual Studio: instalando o Report Designer na versão 2017

Diferente das versões anteriores, o Report Designer não vem embarcado no Microsoft Visual Studio 2017, para usar é preciso instalar uma extensão.

Abra o Visual Studio, clique no menu Tools e em seguida em Extension and Updates.

Em Extension and Updates, clique em Online, em Search digite rdlc, em Microsoft Rdlc Report Designer for Visual Studio clique em Download e aguarde a transferência.

Depois de transferido você será avisado que a instalação será completa somente após fechar e abrir novamente, portanto clique em Close e reinicie o programa.

Ao abrir novamente, a instalação da extensão será iniciada.

Clique em Modify e aguarde o término da instalação.

Se o instalador avisar que tem processos em execução que o impede de continuar, salve seus dados e clique em End Tasks.

Após liberar os recursos, a instalação prosseguirá normalmente.

Ao concluir, clique em Close.

Pronto, agora é só abrir o VS e editar visualmente os relatórios baseados em RDLC.

Até a próxima.

 

Visual Studio: abrir a pasta atual do arquivo na solution

Muitas vezes trabalhamos com soluções complexas, com várias dezenas ou centenas de arquivos, e quando precisamos encontrar fisicamente o arquivo no disco ou no projeto, temos que olhar o tooltip da guia e abrir pasta a pasta.

Felizmente, tem uma opção, que não vem marcada por default no Visual Studio que facilita esta navegação. Ao ativar esta opção, a solution já abre a pasta e coloca o foco no arquivo assim que se inicia a trabalhar nele.

Para configurar esta opção, clique no menu Tools, e em seguida em Options, abra o nó Environment e clique em Documents. Deixe marcada a opção Open file using directory of currently active document e clique em OK.

Outro atalho bastante útil é CTRL + , (Control e vírgula), no qual é possível procurar arquivos por nome e referências.

Anote estas duas dicas, pois vão facilitar muito a navegação pela solução no seu dia a dia.

Visual Studio: alterar o framework padrão para novos projetos

Introdução

Muitas vezes é preciso que todos os novos projetos já estejam em uma versão do .Net Framework específica, ou simplesmente, que já seja criado com o target na última versão disponível no Visual Studio.

Alterando a versão padrão

Abra o Visual Studio, clique em File, em seguida em New e por último em Project…

Anote a versão do .Net Framework que será a padrão para os novos projetos, como por exemplo “4.6.1”.

Pressione as teclas Win + R, em Abrir digite o comando regedit e clique em Ok.

A janela do Editor do Registro será exibida.

Localize a chave HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\NewProjectDialog, e edite a chave fxVersion para a versão do .Net Framework desejada.

Observação: onde está escrito 14.0, que equivale a versão do Visual Studio 2015, pode ser alterada para a versão do seu Visual Studio, como por exemplo, 13.0 para o 2013.

O Visual Studio 2017 não precisa desta configuração, pois ele lembra a última versão usada ao criar um projeto.

Pronto, agora todas os novos projetos serão automaticamente definido com a versão configurada por padrão.

TFS: criar um projeto com vários repositórios

Muitos projetos são compostos por um arquitetura que envolve mais de uma solução, e pra que isso seja gerenciado como um projeto inteiro, é preciso gerenciar demandas em vários projetos menores. Um cenário bem comum são arquiteturas que usam microservices, onde a mesma equipe desenvolve vários serviços relacionados à uma ferramenta maior, ou quando temos uma aplicação monolítica que está sendo dividida a partir de um repositório único.

A aplicação de exemplo simula um ambiente onde teremos um projeto Rest API, um Gateway e uma aplicação Web que consome a API.

Crie o projeto principal dos repositórios

Abra a página principal dos projetos do TFS e clique em New Project.

Em  Create new project, preencha os campos de Project name, Description, em Version control selecion Git, em Work item process selecione Scrum e então clique em Create.

Crie os repositórios a partir do Visual Studio

Para fins de organização, crie um pasta com o nome do projeto no computador local. Como por exemplo C:\Contacts.

Abra o Visual Studio e em Team, clique em Manage Connections…, em Team Explorer – Connect, clique em Manage Connections, clique em Connect to a Project.

Em Connect to a Project, clique em Showing hosted repositories for e por ultimo em Add an account.

Digite as informações da Conta Microsoft e clique em Sign in, Clique no projeto e por último em Connect.

Crie um nova solução e deixe a opção Create new Git repository clicada.

Faça uma pequena alteração, como incluir uma Solution folder ou um arquivo Readme.md.

Clique o botão direito sobre a Solution e em seguida clique em Commit…

Escreva uma descrição para o commit inicial, e clique em Commit All and Push.

Clique em Publish Git Repo

Clique em Advanced e selecione o projeto em Team project e digite o nome da solução em Repository name, e por fim clique em Publish repository.

Repita o processo para outros repositórios.

Exclua o repositório padrão

O TFS cria um repositório padrão como o mesmo nome do projeto, mas não é possível excluí-lo sem criar um novo repositório, portanto, após criar todos os repositórios necessários, ou menos um extra, é possível deletá-lo.

Na página principal do projeto, clique em Code e em seguida em Manage repositories.

 

Clique em ao lado do repositório que deseja excluir, e clique em Delete repository.

Digite o nome do repositório e clique em Delete.