【发布时间】:2014-08-15 14:28:18
【问题描述】:
是否可以根据特定的参数生成不同的数据库?
我的最终目标是 john.domain.com => 创建 john db, paul.domain.com => 创建 paul db
我如何首先使用 EF6 代码 MVC5 来实现这一点?模型可以先做吗?
【问题讨论】:
标签: asp.net-mvc entity-framework
是否可以根据特定的参数生成不同的数据库?
我的最终目标是 john.domain.com => 创建 john db, paul.domain.com => 创建 paul db
我如何首先使用 EF6 代码 MVC5 来实现这一点?模型可以先做吗?
【问题讨论】:
标签: asp.net-mvc entity-framework
是的,您可以在运行时更改连接字符串,例如。
需要添加对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");
}
【讨论】: