EF Code First可以动态创建多个数据库 [英] EF Code First to create multiple databases dynamically

查看:125
本文介绍了EF Code First可以动态创建多个数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Is it possible to generate different databases according to a specific parameter?

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

My final goal is john.domain.com => create john db, paul.domain.com => create paul db

我如何首先使用EF6代码(MVC5)来实现这一目标?

How could I achieve this using EF6 code first, MVC5? Could model first do it?

推荐答案

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

Yes you can change the connection string at runtime, something like. Need to add reference to 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");
}

这篇关于EF Code First可以动态创建多个数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆