Asp.net mvc EF代码首先动态创建多个数据库

Asp.net mvc EF代码首先动态创建多个数据库,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,是否可以根据特定参数生成不同的数据库 我的最终目标是john.domain.com=>createjohndb,paul.domain.com=>createpauldb 如何首先使用EF6代码MVC5实现这一点?model可以先做吗?是的,您可以在运行时更改连接字符串,例如。 需要添加对系统数据的引用 public static class ConnectionStringExtension { public static void ChangeDatabaseTo(this DbCo

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

我的最终目标是john.domain.com=>createjohndb,paul.domain.com=>createpauldb


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

是的,您可以在运行时更改连接字符串,例如。 需要添加对
系统数据的引用

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");
}

是的,您可以在运行时更改连接字符串,例如。 需要添加对
系统数据的引用

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");
}

是的,您可以在运行时更改连接字符串,例如。 需要添加对
系统数据的引用

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");
}

是的,您可以在运行时更改连接字符串,例如。 需要添加对
系统数据的引用

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");
}