gpt4 book ai didi

asp.net - 单网站多数据库、数据库切换

转载 作者:行者123 更新时间:2023-12-01 18:43:02 24 4
gpt4 key购买 nike

我为公司的产品数据库创建了一个内容管理系统 (CMS)。 CMS 基于 asp.net 脚手架,混合了许多自定义页面和操作。目前我们有 7 个产品,所有这些产品都共享相同的数据库架构( Entity Framework 模型优先),并且都在 CMS 中完美运行。问题是,每次我们获得新产品时,我们都必须克隆 CMS 并更改 app.config 中的连接字符串以指向正确的数据库,以便使用新数据库。虽然这种方法有效,但维护起来会变得很麻烦,并且当我们购买更多产品时,它会让我们彻底失败。

我想要做的是有一个集中的登录页面,用户可以在其中引导登录,然后可以选择连接到并根据他们的选择编辑特定产品。我们的想法是,我们将拥有一个能够根据用户在数据库之间切换的 CMS 站点。无法将所有产品数据库合并到单个主产品数据库中。

我不确定从哪里开始实现这个目标,或者这是否是实现我要维护的单一 CMS 目标的正确计划,并且正在寻找这方面的一些指导。

最佳答案

假设您的数据库结构相同,您可以在获取实体上下文实例的任何地方使用工厂方法,并将逻辑放入其中以获取正确的连接字符串(或者如果存在可以使用的命名约定,则计算它) )。例如,这样的事情可能会起作用:

    public static MyDatabaseEntities CreateEntityContext(string productName)
{
string connectionString = null;
switch (productName.Trim().ToLower())
{
case "apples":
connectionString = ConfigurationManager.ConnectionStrings["MyDatabase_Apples"].ConnectionString;
break;
case "pears":
connectionString = ConfigurationManager.ConnectionStrings["MyDatabase_Pears"].ConnectionString;
break;
default:
connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
break;
}
return new MyDatabaseEntities(connectionString);
}

然后在任何需要 CRM 数据上下文实例并传入您在着陆页上计算出的产品名称的地方使用此方法。

关于asp.net - 单网站多数据库、数据库切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com