Подключение к нескольким базам данных в веб-приложении MVC - PullRequest
2 голосов
/ 27 октября 2009

Как подключиться к различным базам данных для веб-приложения .NET MVC, написанного на C #?

Здесь структура таблицы базы данных остается прежней. Все, что меняется, это имя базы данных. Итак, как мне вручную подключиться к базе данных или использовать изменить строку подключения?

Хитрость в том, чтобы использовать один и тот же код. В зависимости от URL, я хочу, чтобы данные отображались из другой базы данных. Таким образом, Views и Controller (в значительной степени) имеют один код w.r.t. модель.

-Datte

1 Ответ

8 голосов
/ 27 октября 2009

Вот очень простой способ сделать то, о чем вы думаете. В вашем файле web.config вы можете определить две строки подключения:

<connectionStrings>
    <add name="DevelopmentDB" providerName="System.Data.SqlClient"
        connectionString="Data Source=sql-dev.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" />
    <add name="ProductionDB" providerName="System.Data.SqlClient"
        connectionString="Data Source=sql-prod.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" />
</connectionStrings>

Затем в вашем (базовом) контроллере вы можете создать метод, который возвращает соответствующую строку соединения на основе запроса, например:

internal string ConnectionString
{
    get
    {
        return getConnectionStringByServerName(this.HttpContext.Request.ServerVariables["SERVER_NAME"]);
    }
}

internal string getConnectionStringByServerName(string serverName)
{
    if (serverName.Equals("localhost"))
    {
        return WebConfigurationManager.ConnectionStrings["DevelopmentDB"].ConnectionString;
    }
    else
    {
        return WebConfigurationManager.ConnectionStrings["ProductionDB"].ConnectionString;
    }
}

Конечно, вы можете изменить критерии выбора для того, что имеет больше смысла.

Удачи!

...