database-design - 每个帐户具有单独数据库的 Web 应用程序
问题描述
我正在尝试创建一个 .Net Core Web 应用程序,客户将在其中为其公司创建一个帐户,门户将为该公司创建一个单独的数据库。这样,每个登录到我们的 Web 应用程序的客户都将他们的数据与其他客户分开。我正在考虑使用多租户,但我看到的每一篇文章都是在部署应用程序之前创建他们的数据库。但是我需要在运行时为新客户创建一个数据库,这样当新客户创建帐户时,他们的数据库就会自动创建。我的第一个问题是,我应该使用多租户 Web 应用程序吗?其次,如何在运行时为新帐户创建新数据库?最后,如果我更改模型中的某些内容,如何将其发布到所有数据库?
解决方案
首先,数据库可以在运行时创建。例如,您可以让您的注册应用程序运行一个只有它有权访问的 SP,从而创建一个数据库,但是,只需将 customerID 添加到所有表并通过它过滤所有结果就会产生类似的效果。您可以创建一个所有应用程序都使用的 EF 包装层,该层在其构造函数中需要一个 customerID,并公开已按此 ID 过滤的 IQueryables。
推荐阅读
- javascript - 自动单击表单输入?
- java - 父 maven 项目在使用 IDEA 编译时出错,但模块编译没有问题
- php - Laravel - Artisan::call() 不接受参数
- javascript - console.log(string.length); 之间的 JavaScript 区别;和 console.log([string.length]);
- authorization - 我们可以将不记名令牌与 jetty jsessionid 一起使用吗?
- delphi - 如何通过代码恢复字段的最后一个值?
- qt - 如何防止内容出现在 qml 过渡的高度以下?
- elasticsearch - Elasticsearch 仅查询具有自定义日期格式的年份
- c - 为什么 apr_base64_encode apache(2.7 版本) api 与 linux 命令“base64”相比返回不同的字符串
- mysql - 如何将mysql日志重定向到容器内的/dev/stdout?