Update Persistence project

Open Northwind.sln solution.

Update data types

Fix SQL data types in all files under Src/Persistence/Configuration folder using the following data type mappings between SQL Server and PostgreSQL:

Solution

SQL Server PostgreSQL
ntext text
image bytea
datetime timestamp

For example,

builder.Property(e => e.Description).HasColumnType("ntext");

should be changed to

builder.Property(e => e.Description).HasColumnType("text");

Manage Nuget Packages

Remove Microsoft.EntityFrameworkCore.SqlServer Nuget package from the Persistence project.

SQL Nuget

Add Npgsql.EntityFrameworkCore.PostgreSQL Nuget package to the Persistence project (version 3.1.2)

Postgre Nuget

Change database provider

Update Persistence/DependencyInjection.cs file:

services.AddDbContext<NorthwindDbContext>(options =>
    options.UseNpgsql(configuration.GetConnectionString("NorthwindPostgreDatabase")));

Update DesignTimeDbContextFactoryBase.cs file:

private const string ConnectionStringName = "NorthwindPostgreDatabase";
optionsBuilder.UseNpgsql(connectionString);

Update migrations

Remove existing migrations (delete Persistence/Migrations folder).

In order to run following commands, you should be inside Src/Persistence folder.

Recreate migrations:

dotnet ef migrations add InitialPostgre

Create database:

dotnet ef database update