entity-framework - 带 DbContext 池和 Multi-Tenancy 的 EF Core - 每个租户的数据库

标签 entity-framework entity-framework-core

我需要解决 Entity Framework 核心中的 Multi-Tenancy 问题。每个租户都有自己的数据库(由于历史原因,无法更改)。

我将按照许多地方的建议使用上下文工厂(example 1example 2example 3)。

我的问题是:

  • 我可以通过这种方法使用上下文池吗
  • 我可以使用 OnModelCreating 中设置的 IMutableEntityType.QueryFilter 吗?

如果从池中返回 DbContext,我担心它会链接到旧的连接字符串,而不是新的(如果请求是从不同的租户开始的,那么上下文是从哪里创建的)。

我想我可以像这样解决迁移(来自 second point ):

foreach (var tenant in allTenants)
{
    var context = dbContextFactory.CreateDbContext(tenant, configuration);
    context.Database.Migrate();
}

除了我的 2 个问题。在开始编码之前还有什么我应该考虑的吗?

最佳答案

是的,你可以使用查询过滤器

不,你不能使用 DbContext 池

关于entity-framework - 带 DbContext 池和 Multi-Tenancy 的 EF Core - 每个租户的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553678/

相关文章:

c# - 使用同一列进行多个计数的 EF Core Linq

c# - 为什么 EF 在比较 null 变量时不返回任何结果?

asp.net - UserManager - 访问已处置对象

c# - 具有多个相同外键的 Entity Framework 模型

c# - SaveChanges() 正在保存 Unchanged 记录

c# - 获取具有深层相关实体的对象

c# - 将 Entity Framework 与现有的 ORACLE 数据库结合使用。 Visual Studio 2012 和弃用的 ODP.NET 驱动程序

c# - EF Core 2.0 FromSql 加载相关实体

c# - EF Core - 使用通用方法包含相关实体

entity-framework - 如何测试DbContext是否在内存中?