Working with databases


SimplCommerce supports many database engines. We have tested with SQL Server, PostgreSQL, SQLite. Generaly, it can work with any database that Entity Framework Core supports. See Entity Framework Core providers

SimplCommerce supports SQL Server by default. There a couple of changes need to be made in order to swich to another database engine.

  • Add package reference to the database provider you would like to use in the SimplCommerce.WebHost.csproj

  • Update the code to use your the new provider in Program.cs

configBuilder.AddEntityFrameworkConfig(options =>
    options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"))
);

and in SimplCommerce.WebHost/Extensions/ServiceCollectionExtensions.cs

services.AddDbContextPool<SimplDbContext>(options =>
    options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"),
        b => b.MigrationsAssembly("SimplCommerce.WebHost")));
return services;
  • Update the connection string in the appsettings.json to your database engine

  • Delete all the existing migration code in the 'Migrations' folder in the SimplCommerce.WebHost project. Because the database migration code are generated differently from one to another database provider

  • Run 'Add-Migration \<NameOfMigration>' in Package Management Console or 'dotnet ef migrations add \<NameOfMigration>' in the command line

  • Run 'Update-Database' in the Package Management Console or 'dotnet ef database update' in the command line

We encourage you to keep track the generated code in the Migrations folder in source control so that you can do the migration on your existing database later. When you want to do migration on existing database, get the latest MigrationId in '__EFMigrationsHistory' table. Then restore the Migration code back to that snapshot. Then you can do 'Add-Migration' from there. Entity Framework will detect changes since that snapshot