【问题标题】:EF Code First to create multiple databases dynamicallyEF Code First 动态创建多个数据库
【发布时间】:2014-08-15 14:28:18
【问题描述】:

是否可以根据特定的参数生成不同的数据库?

我的最终目标是 john.domain.com => 创建 john db, paul.domain.com => 创建 paul db

我如何首先使用 EF6 代码 MVC5 来实现这一点?模型可以先做吗?

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案1】:

    是的,您可以在运行时更改连接字符串,例如。 需要添加对System.Data的引用。

    public static class ConnectionStringExtension
    {
        public static void ChangeDatabaseTo(this DbContext db, string newDatabaseName)
        {
            var conStr = db.Database.Connection.ConnectionString;
            var pattern = "Initial Catalog *= *([^;]*) *";
            var newConStr = Regex.Replace(conStr, pattern, m =>
            {
                return m.Groups.Count == 2
                    ? string.Format("Initial Catalog={0}", newDatabaseName)
                    : m.ToString();
            });
    
            db.Database.Connection.ConnectionString = newConStr;
        }
    }
    

    用法。

    using (var db = new AppContext())
    {
        // Uses it just before any other execution.
        db.ChangeDatabaseTo("MyNewDatabase");
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多