C# 在运行时数据库优先方法ASP.net MVC5中动态更改db.Context文件中的数据库?

C# 在运行时数据库优先方法ASP.net MVC5中动态更改db.Context文件中的数据库?,c#,asp.net-mvc,C#,Asp.net Mvc,您好,我想在asp.net mvc的db.context文件中动态更改数据库名称。我正在db.context文件中动态传递数据库名称。它正在工作,但一旦我刷新edmx文件,意味着我的动态编码将在db.context文件中自动清除。我想在asp.net mvc运行时动态更改数据库。在这里,我尝试在db.context文件中使用它,但一旦我更新或刷新了edmx,就意味着它将清除我的代码 web.config文件中的我的连接字符串代码 <connectionStrings> <

您好,我想在asp.net mvc的db.context文件中动态更改数据库名称。我正在db.context文件中动态传递数据库名称。它正在工作,但一旦我刷新edmx文件,意味着我的动态编码将在db.context文件中自动清除。我想在asp.net mvc运行时动态更改数据库。在这里,我尝试在db.context文件中使用它,但一旦我更新或刷新了edmx,就意味着它将清除我的代码

web.config文件中的我的连接字符串代码

<connectionStrings>
    <add name="CRMEntities" connectionString="Data Source=192.168.0.73\SQLEXPRESS,14330;Initial Catalog=CRM;User ID=sa;Password=wafewin;
        MultipleActiveResultSets=True;Application Name=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
现在我怀疑是否有可能在运行时在不更改web.config文件的情况下在db.context文件或任何其他位置动态连接多个数据库

任何人请帮助我解决这个问题,在db.context文件中动态更改数据库名称,并在控制器中连接,还请告诉另一个方法在运行时mvc中动态更改数据库


谢谢

展开edmx文件节点。您将看到一个与实体同名但以.Context.tt结尾的文件。这是保存EDMX时运行的T4模板。然后,该T4模板创建上下文。您可以根据需要修改T4模板(确保源代码管理中有原件或副本)以生成自定义代码。您还可以在这里创建一个客户构造函数,将变量传入字符串,然后在实例化时传入数据库名称

FYI,考虑使用String。格式化作为将数据库名称添加到连接字符串中的方法。连接成本很高,但主要是连接时比使用string.Format更容易搞乱

namespace CostToWafe
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class CRMEntities : DbContext
    {

        public CRMEntities() : base()
        {
            this.Database.Connection.ConnectionString = "Presist Security Info=False;User ID =sa;Password=**"+GLOBAL.ZDATABASE+"**;Intial Catalog=SS1718;Data Soure=192.168.70.41";
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<Address> Addresses { get; set; }
        public virtual DbSet<AddressType> AddressTypes { get; set; }
        public virtual DbSet<Area> Areas { get; set; }
        public virtual DbSet<Bank> Banks { get; set; }
        public virtual DbSet<City> Cities { get; set; }
        public virtual DbSet<ContactType> ContactTypes { get; set; }
    }
}
public class VisitorsFormController : Controller
{
    CRMEntities db = new CRMEntities();
    // GET: /VisitorsForm/
    public ActionResult Index()
    {
        return View()
    }
}