Changing database engine

Create the migration of database

::
Add-Migration Initial -context AdminDbContext -output Data/Migrations Update-Database -context AdminDbContext

Using other database engines

PostgreSQL

Install following NuGet package:

::
Npgsql.EntityFrameworkCore.PostgreSQL.Design

Find RegisterDbContexts function in Helpers\StartupHelpers.cs

::
services.AddDbContext<AdminDbContext>(options => options.UseSqlServer(configuration.GetConnectionString(ConfigurationConsts.AdminConnectionStringKey), optionsSql => optionsSql.MigrationsAssembly(migrationsAssembly)));

and change UseSqlServer to UseNpgsql.

Don’t forget to update your connection string in appsettings.json and (re)generate migrations for new database

SQLite

Install following NuGet package:

::
Microsoft.EntityFrameworkCore.Sqlite.Design

Find RegisterDbContexts function in Helpers\StartupHelpers.cs

::
services.AddDbContext<AdminDbContext>(options => options.UseSqlServer(configuration.GetConnectionString(ConfigurationConsts.AdminConnectionStringKey), optionsSql => optionsSql.MigrationsAssembly(migrationsAssembly)));

and change UseSqlServer to UseSqlite.

Note

Don’t forget to update your connection string in appsettings.json and (re)generate migrations for new database

MySQL and MariaDB

Install the following NuGet package:

::
Pomelo.EntityFrameworkCore.MySql

Find RegisterDbContexts function in Helpers\StartupHelpers.cs

::
services.AddDbContext<AdminDbContext>(options => options.UseSqlServer(configuration.GetConnectionString(ConfigurationConsts.AdminConnectionStringKey), optionsSql => optionsSql.MigrationsAssembly(migrationsAssembly)));

and change UseSqlServer to UseMySql.

Find Properties in Skoruba.IdentityServer4.Admin.EntityFramework\Entities\Log.cs

::
[Column(TypeName = “xml”)] public string Properties { get; set; }

and remove the [Column] attribute. As MySQL and MariaDB don’t know about a XML data type.

Note

Don’t forget to update your connection string in appsettings.json and (re)generate migrations for new database