首页 > 解决方案 > 每个帐户具有单独数据库的 Web 应用程序

问题描述

我正在尝试创建一个 .Net Core Web 应用程序,客户将在其中为其公司创建一个帐户,门户将为该公司创建一个单独的数据库。这样,每个登录到我们的 Web 应用程序的客户都将他们的数据与其他客户分开。我正在考虑使用多租户,但我看到的每一篇文章都是在部署应用程序之前创建他们的数据库。但是我需要在运行时为新客户创建一个数据库,这样当新客户创建帐户时,他们的数据库就会自动创建。我的第一个问题是,我应该使用多租户 Web 应用程序吗?其次,如何在运行时为新帐户创建新数据库?最后,如果我更改模型中的某些内容,如何将其发布到所有数据库?

标签: database-designmulti-tenant

解决方案


首先,数据库可以在运行时创建。例如,您可以让您的注册应用程序运行一个只有它有权访问的 SP,从而创建一个数据库,但是,只需将 customerID 添加到所有表并通过它过滤所有结果就会产生类似的效果。您可以创建一个所有应用程序都使用的 EF 包装层,该层在其构造函数中需要一个 customerID,并公开已按此 ID 过滤的 IQueryables。


推荐阅读