【发布时间】:2023-03-13 11:28:01
【问题描述】:
我发现了许多类似的问题并发布了如何做到这一点,但我不确定哪种方法更好。我认为我需要一些 DbContextFactory 类,它将根据 TenantId 返回我的上下文,但我不知道如何使用 OnModelCreating 来实现这一点。我主要看到有关 db-per-tenant 架构的帖子,但我不确定我是否知道如何将模式绑定到上下文(通过用户?)。我试图遵循这个 https://romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ 但看起来这不适合最新的 EF 版本。我也检查了这个 Multi-Tenant With Code First EF6 但是 IDbModelCacheKeyProvider 发生了变化,现在在 Create 中需要 DbContext,这与我想要做的相反。你能举例说明这是怎么做的吗?
【问题讨论】:
-
如果您需要每个租户不同的架构,那么为什么不是每个租户的数据库。然后你可以根据传入的请求在 DI 中注册不同的上下文。
-
每个租户的架构需要更少的服务器资源
-
然后为每个租户使用不同的上下文。
-
是的,我正在尝试弄清楚如何为每个租户使用不同的上下文
-
您可以为租户之间共享的表使用全局查询过滤器和租户自己的表的单独上下文的通用上下文。但我建议对所有租户使用相同的架构并依赖全局查询过滤器。使用相同的架构,您的应用程序代码无需担心架构,它适用于任何租户。
标签: c# asp.net-core entity-framework-core