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);
}