using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Xunit; namespace HotWarmCold { public class Test { private readonly OrderDbContext.DbFactory _factory; public Test() { var sc = new ServiceCollection(); sc.AddSingleton<OrderDbContext.DbFactory>(_ => OrderDbContext.Factory); var provider = sc.BuildServiceProvider(); _factory = provider.GetRequiredService<OrderDbContext.DbFactory>(); } private async Task AddOrder(Year token) { await using var db = _factory(token); db.Orders.Add(new Order { OrderId = Guid.NewGuid() }); await db.SaveChangesAsync(); } [Fact] public async Task TestFilter() { var year2021 = new Year(2021); await AddOrder(year2021); var year2022 = new Year(2022); await AddOrder(year2022); await AddOrder(year2022); await using var db2021 = _factory(year2021); var orders2021 = await db2021.Orders.CountAsync(); Assert.Equal(1, orders2021); await using var db = _factory(year2022); var orders2022 = await db.Orders.CountAsync(); Assert.Equal(2, orders2022); } } }