我发现了许多类似的问题,并发布了如何做的方法,但是我不确定哪种方法更好。我认为我需要一些DbContextFactory类,该类将根据TenantId返回上下文,但是我不知道如何使用OnModelCreating实现此目的。我主要看到有关每租户数据库体系结构的文章,但不确定是否知道如何将架构绑定到上下文(通过用户?)。我试图遵循这个 https://romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ 但看起来这不适用于最新的EF版本。我也检查了 Multi-Tenant With Code First EF6 但是IDbModelCacheKeyProvider更改了,现在在Create中需要DbContext,这与我想做的相反。能否请您举一个例子说明如何做到?
答案 0 :(得分:3)
使用以下代码在您的上下文中设置默认架构:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("blogging");
}
使用相同的连接字符串创建另一个上下文,然后执行:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("mydifferentschemaname");
}
这应该达到您的期望。
还有更多信息here。
您还可以将表(实体)映射到以下模式:
modelBuilder.Entity<Department>().ToTable("t_Department", "school");