代码之家  ›  专栏  ›  技术社区  ›  Jamil

如何在ef core中实现每个租户的模式?

  •  3
  • Jamil  · 技术社区  · 6 年前

    我发现了许多类似的问题和帖子,但我不确定哪种方法更好。我认为我需要一些dbContextFactory类,它将根据tenantID返回上下文,但我不知道如何通过onModelCreating实现这一点。我经常看到关于每个租户架构的DB的文章,我不确定我是否知道如何将模式绑定到上下文(通过用户?)我试着跟着这个 https://romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ 但看起来这不适合最新的EF版本。我也检查过这个 Multi-Tenant With Code First EF6 但idbModelCacheKeyProvider已更改,现在在Create中需要dbContext,这与我想做的相反。你能给我举个例子吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jammer    6 年前

    使用此代码在上下文中设置默认架构:

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