Get the DatabaseModel using Entity Framework

general csharp

The following code gives the database model.

var services = new ServiceCollection().AddEntityFrameworkDesignTimeServices();

var designTimeServices = new Microsoft.EntityFrameworkCore.SqlServer.Design.Internal.SqlServerDesignTimeServices();
designTimeServices.ConfigureDesignTimeServices(services);

var sourceDatabaseProviders = services.BuildServiceProvider();

var databaseModelFactory = sourceDatabaseProviders.GetRequiredService<IDatabaseModelFactory>();

var options = new DatabaseModelFactoryOptions(tablesToInclude, schemas);

var databaseModel = databaseModelFactory.Create(connectionString, options);

The line highlighted above will change based on the database:-

// Oracle
var designTimeServices = new Oracle.EntityFrameworkCore.Design.Internal.OracleDesignTimeServices();

// Postgres
var designTimeServices = new Npgsql.EntityFrameworkCore.PostgreSQL.Design.Internal.NpgsqlDesignTimeServices();

// MySql
var designTimeServices = new Pomelo.EntityFrameworkCore.MySql.Design.Internal.MySqlDesignTimeServices();

// Sqlite
var designTimeServices = new Microsoft.EntityFrameworkCore.Sqlite.Design.Internal.SqliteDesignTimeServices();