Newer
Older
HotColdData / Order.cs
@Derek Comartin Derek Comartin on 11 Jul 2022 1 KB Init
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);
}