Añadir PostgreSQL a DotNet Core

Creación del proyecto

mkdir MySite
cd MySite

dotnet new mvc

Packages

dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Editar MySite.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">
  <!-- #... -->
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.1" />

    <!-- Añadir -->
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
  </ItemGroup>
</Project>
dotnet restore

AppDbContext

Crear AppDbContext.cs dentro del directorio Models

using Microsoft.EntityFrameworkCore;

namespace MySite.Models
{
    public class AppDbContext : DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) {}
    }
}

Startup.cs

Editar el método ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddEntityFrameworkNpgsql().AddDbContext<AppDbContext>(opt =>
        opt.UseNpgsql(Configuration.GetConnectionString("AppDbContext"))
    );
}

appsettings

Editar appsettings.Development.json, añadiendo ConnectionString

{
  "ConnectionStrings": {
    "AppDbContext": "User Id=snicoper;Password=123456;Server=localhost;Port=5432;Database=practicas;Integrated Security=true;Pooling=true;"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
    "Default": "Debug",
    "System": "Information",
    "Microsoft": "Information"
    }
  }
}

Probar

Dentro de Models crear Persona.cs con el siguiente código.

namespace MySite.Models
{
    public class Persona
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

Editar Models/AppDbContext.cs y añadir la propiedad:

public DbSet<Persona> Personas { get; set; }

Añadir migración y actualizad la base de datos

dotnet ef migrations add Initial
dotnet ef database update