EF Code First首先动态创建多个数据库

时间:2014-08-14 05:46:42

标签: asp.net-mvc entity-framework

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

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

我怎样才能首先使用EF6代码实现这一点,MVC5?可以先建模吗?

1 个答案:

答案 0 :(得分:3)

是的,您可以在运行时更改连接字符串,例如。 需要添加对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");
}