如何在ASP.NET MVC中动态更改连接字符串

在我们公司中,我们有一个针对1个数据库的应用程序。现在,我被告知要为每个客户公司使用单独的数据库使其成为多租户。因此,我创建了一个新数据库,用于存储所有用户并存储他们的公司名称,该名称将用于更改数据库。我要做什么:1.用户登录2.后端检查用户的公司名称3.检索到的公司名称将分配给dbcontext:base,它将使用公司名称切换数据库


当然,我在stackoverflow和其他地方浏览了与此相关的其他问题,其中大多数人将其作为解决方案:


    public FacilityEntities() : base("name=Demo") { }

    public FacilityEntities(string dbConnection) : base(dbConnection)

    {

    }

大多数人说这可行。但这对我不起作用。另外,尽管不建议这样做,但我也尝试在运行时更改web.config文件,但每次用户登录时,应用程序都会刷新,无法通过登录过程。

如何设置更改后的数据库而不必使用using(){}?如何让登录的用户一直在使用该数据库?每次对数据库执行操作时,是否都必须调用此新数据库吗?有什么方法可以将此已登录用户将此更改后的数据库设置为“主数据库”?

守着星空守着你
浏览 237回答 3
3回答

小唯快跑啊

对于此问题,我只需将新实体的第二个连接字符串添加到您的web.config中<connectionStrings>&nbsp;<add name="DefaultConnection" .../>&nbsp;<add name="DefaultConnection2" .../></connectionStrings

DIEA

您的dbcontext类具有2个构造函数。1个默认值和一个参数化的值。您需要调用参数化版本return&nbsp;dbContext&nbsp;??&nbsp;(dbContext&nbsp;=&nbsp;new&nbsp;FacilityEntities());尝试将其更改为return&nbsp;dbContext&nbsp;??&nbsp;(dbContext&nbsp;=&nbsp;new&nbsp;FacilityEntities("New&nbsp;Connection&nbsp;String"));无论哪种情况,都必须修改连接代码。
打开App,查看更多内容
随时随地看视频慕课网APP