是否可以根据特定参数生成不同的数据库?
我的最终目标是john.domain.com =>创建john db,paul.domain.com =>创建保罗db
我怎样才能首先使用EF6代码实现这一点,MVC5?可以先建模吗?
答案 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");
}