c# - 具有多个数据库设置的 Web 应用程序 - ASP.NET MVC
问题描述
我正在构建一个 ASP.NET MVC 应用程序,该应用程序需要为每个客户端 [特别是分支] 使用单独的数据库。
在登录页面中,用户需要提供登录凭据和分支名称。提供的分支名称将决定是连接到数据库 1 还是数据库 2。
前任。
- 分支1、4、5应该连接到db1
- 分支2、3、6、7应该连接到db2
- 分支8、9、10应该连接到db3
我应该实施哪种方法最适合这种情况?
这是我的想法(注意:我需要分支名称来检索某些数据):
1.包含用户名、密码、分支、用户应该连接的数据库名称的单独数据库,然后将分支和数据库名称存储在会话/cookie中[但是我如何从数据访问层访问会话/cookie一个单独的项目]
2.将带有分支子列表的数据库列表存储在一个xml
文件中,检索它,然后将其保存在会话/cookie中[再次,我如何从位于单独项目上的数据访问层访问会话/cookie]
3.包含用户名、密码、分支、用户应连接的数据库名称的单独数据库,将分支和数据库名称存储在预先添加的 AppSetting 键中
<add key="Database" value="" /> <add key="Branch" value="" />
然后web.config
使用ConfigurationManager
. 这将需要web.config
根据分支在运行时修改文件[这甚至是一个好方法吗?]
任何建议和意见将不胜感激。
解决方案
为用户帐户及其与数据库的映射建立一个中央/主数据库。
选项 1:如果您有大量分支机构/客户并且希望入职流程是一个无缝流程,则非常理想。当系统中添加新的分支/客户端时,您还需要动态创建一个新数据库。那么只有这个解决方案是值得的。如果您认为这太多,请使用选项 2。
选项 3:易于设置,但您需要在各个环境中仔细管理 web.config 文件的部署。
顺便说一句,您可以从单独的项目访问会话。
推荐阅读
- c# - 需要一个用于字母数字小写和 . 和 _
- xaml - 如何从 C++/CX 中的 XAML 资源中获取 CommandBar?
- python - 在 Pandas 中设置 Gmaps 边界
- php - Ajax:尝试使用相对路径时出现发布错误
- node.js - node.js 中的 MVC 对开发 restful api 很重要吗?
- vue.js - Vuetify 图标显示在轮播上,但不在 v-icon 上
- python - 将 Pandas 系列中的“flatline”重复数据替换为 nan
- gerrit - 如何检测gerrit中移动的代码行?
- r - 加快代码查找向量中每 12 个元素之间的差异
- keras - 您可以将 SageMaker 训练的模型加载到 Keras 中吗?