【问题标题】:Web application with separate database per account每个帐户具有单独数据库的 Web 应用程序
【发布时间】:2019-11-02 12:28:25
【问题描述】:

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

【问题讨论】:

    标签: database-design multi-tenant


    【解决方案1】:

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

    【讨论】:

    • 有没有关于在运行时使用 .net core 创建数据库的文章?最好先使用 EF 核心代码。
    • 您可以使用 EF 创建架构。但是,如果您为每个客户使用单独的数据库,您可能希望为他们使用不同的数据库用户访问权限,这不是代码优先的一部分。我建议您创建一个客户数据库管理数据库,在其中维护客户列表和他们有权访问的数据库,并向该数据库添加一个 SP 以创建新数据库,然后使用代码优先在新数据库中创建模式数据库。
    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 2018-07-13
    • 1970-01-01
    • 2011-09-05
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多