using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
public class BaseContext : DbContext
protected override void OnConfiguring(DbContextOptionsBuilder options)
options.UseSqlite("Data Source=:memory:;Version=3;New=True;");
protected override void OnModelCreating(ModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
public void EnsureTablesCreated()
var infrastructure = this.GetInfrastructure();
var migSqlGen = infrastructure.GetService<IMigrationsSqlGenerator>();
var modelDiffer = infrastructure.GetService<IMigrationsModelDiffer>();
var conn = infrastructure.GetService<IRelationalConnection>();
var diffs = modelDiffer.GetDifferences(null, Model.GetRelationalModel());
var sql = migSqlGen.Generate(diffs, Model, MigrationsSqlGenerationOptions.Default);
when (ex.Message.Contains("There is already an object named"))
public static void Main()
using var context = new BaseContext();
Console.WriteLine("Init...");
var databaseCreator = (RelationalDatabaseCreator)context.Database.GetService<IDatabaseCreator>();
databaseCreator.CreateTables();