2009-10-27 5 views
2

Comment se connecter à différentes bases de données pour une application Web .NET MVC écrite en C#?Connexion à plusieurs bases de données dans l'application Web MVC

La structure de la table de base de données reste la même. Tout ce qui change est le nom de la base de données. Alors, comment me connecter manuellement à une base de données ou utiliser modifier la chaîne de connexion?

L'astuce consiste à utiliser le même code. En fonction de l'URL, je souhaite que les données soient affichées à partir de différentes bases de données. Donc, les vues et le contrôleur (à peu près) a un code unique w.r.t. le modèle.

-Datte

+1

Comment vous connectez-vous à la base de données? ADO.NET? LINQ à SQL? Cadre d'entité? NHibernate? Autre chose? – jrista

+0

Oui, j'utilise Entity Framework ... – dattebayo

Répondre

8

est ici un moyen très simple de faire ce que je pense que vous demandez. Dans votre fichier web.config, vous pouvez définir vos deux chaînes de connexion:

<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> 

Ensuite, dans votre contrôleur (de base), vous pouvez créer une méthode qui retourne la chaîne de connexion appropriée en fonction de la demande, tels que:

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

Vous pouvez bien sûr changer les critères de sélection pour ce qui est le plus logique.

Bonne chance!

Questions connexes