using System; using Microsoft.EntityFrameworkCore; namespace HotWarmCold { public class Order { public Guid OrderId { get; set; } } public class OrderDbContext : DbContext { private readonly Year _year; public DbSet<Order> Orders { get; set; } public OrderDbContext(Year year) { _year = year; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Order>().HasKey(x => x.OrderId); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Logic would live here to figure out which database to connect to based // data passed in via ctor/delegate. optionsBuilder.UseInMemoryDatabase($"HotCold{_year.Value}"); } public delegate OrderDbContext DbFactory(Year token); public static OrderDbContext Factory(Year year) { return new OrderDbContext(year); } } public record Year(int Value); }