Asp.Net Core + Entity Framework Core + Postgres
Primeiramente é necessário instalar os seguintes programas:
Não irei entrar em detalhes de como instalar cada um desses softwares, estou partindo do pressuposto que vocês já tenham eles instalados. Portanto vamos botar a mão na massa!
Criando o projeto asp.net web api
Para deixar da maneira mais fácil possível abra o seu prompt de comando, e realize os passos conforme imagem abaixo:
Com o visual studio code aberto siga os passos a seguir para criar um projeto do tipo webapi.
Instalando os pacotes do Entity Framework
- dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
- dotnet add package Microsoft.Extensions.Configuration.FileExtensions
- dotnet add package Microsoft.EntityFrameworkCore.Design
- dotnet tool install global dotnet-ef (caso não esteja instalada)
Lembrando que o dotnet-ef é necessário senão o migrations não funciona.
Criando o model
Siga os passos abaixo para criar o modelo de usuario, que no caso vai ser nossa entidade a ser criada no banco.
Criando o DbContext
O DbContext é necessário para fazer as configurações do banco e das entidades.
No EF utilizado com Sql Server, essa classe de Context já iria funcionar quando rodasse o migrations, porém com postgres não estava criando a tabela user.
Para resolver este problema foi necessário adicionar o override no método OnModelCreating e mapear a entidade.
Injeção de dependência (DI)
Após as configurações da string de conexão, é necessário resolvermos a dependência do Entity no arquivo startup.cs.
PS: Note que adicionei diretamente a string de conexão, porém você pode e deve, utilizar o appsettings.Development.json, só fiz diretamente aqui para encurtar o tutorial.
TUDO OK! Agora é a hora do Migrations
Neste momento, todas as configurações foram feitas, agora é o momento de rodar o migrations para que nosso banco seja criado e também nossa entidade.
Os comandos são:
- dotnet ef migrations add InitialCreate
- dotnet ef database update
Conclusão
No começo parece um pouco complicado, mas as configurações são feitas apenas uma vez, então vale a pena pelo ganho de produtividade.
Se quiserem podem baixar o código fonte do projeto aqui no meu GitHub.