using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Xunit; namespace MultiTenant { public class Test { private readonly OrderDbContext.TenantFactory _factory; public Test() { var sc = new ServiceCollection(); sc.AddSingleton<OrderDbContext.TenantFactory>(_ => OrderDbContext.Factory); var provider = sc.BuildServiceProvider(); _factory = provider.GetRequiredService<OrderDbContext.TenantFactory>(); } private async Task AddOrder(Token token) { await using var db = _factory(token); db.Orders.Add(new Order { TenantId = token.TenantId, OrderId = Guid.NewGuid() }); await db.SaveChangesAsync(); } [Fact] public async Task TestFilter() { var tenant1 = new Token(Guid.NewGuid()); await AddOrder(tenant1); var tenant2 = new Token(Guid.NewGuid()); await AddOrder(tenant2); await AddOrder(tenant2); await using var db = _factory(tenant1); var tenant1Orders = await db.Orders.CountAsync(); Assert.Equal(1, tenant1Orders); } } }