2010-01-22 10 views
3

Comment pouvons-nous changer la base de données sous-jacente pour WebApp basée sur Linq?Changement de base de données dans LinqToSql

par exemple:

Lorsque nous libérons notre application web, disons à libérer de la production, si vous utilisez ADO.NET, il est aussi simple que de modifier la chaîne de connexion dans web.config à pointez vers la base de données en ligne en cours d'utilisation. Les bases de données sont presque identiques, les autres données sont stockées.

Quoi et comment changeons-nous la base de données lors de l'utilisation de LINQ?

Note; utilisant C#

grâce

+0

Y a-t-il une chaîne de connexion dans web.config? il devrait y en avoir un avec l'attribut providerName = "System.Data.SqlClient" – nWorx

+0

Il y en a un, mais il faut garder les deux là, pour le live et la production. Nécessaire de les échanger lors de la sortie du produit, sans les supprimer/éditer manuellement –

Répondre

1

Je recommande fortement dans votre application d'instancier le contexte de données avec la surcharge de la chaîne de connexion. Je crée un composant d'aide qui fait:

public static class DCHelper 
{ 
    public static MyDataContext Create() 
    { 
    return new MyDataContext(ConfigurationManager.ConnectionStrings["CS"].ConnectionString); 
    } 
} 

De cette façon, je ne dispose que d'un endroit pour changer la façon dont le contexte est instancié, ou je peux modifier le fichier de configuration pour changer les bases de données. Ou, la méthode create peut prendre une entrée pour déterminer la connexion.

+0

Merci mon pote, travail fait –

-1

Si vous voulez juste savoir comment vous pouvez déplacer le connection string to the Web.Config Rick Strahl a un example sur son blog.

Si vous souhaitez passer à un autre type de base de données ... Vous pouvez probablement enregistrer la plupart (sinon toutes les requêtes.) Mais vous devrez modifier le fournisseur/référentiel. LINQ 2 SQL prend uniquement en charge MSSQL à ce moment (et c'est tout ce qu'il est vraiment destiné à faire.)

Vérifiez LINQ to Entities si vous avez besoin de plus de flexibilité.

+0

Vous êtes sûr que OP vous demande de changer la chaîne de connexion, pas le type de base de données – bdukes

+0

Les bases de données sont du même type (SQL SERVER 2005) DB de production "et" Live DB " –

+0

Oui j'ai vu cela après que j'ai posté ma réponse. J'ai ajouté une note à ce sujet. –

4

Vous devriez toujours pouvoir faire la même chose; DataContext (y compris ceux générés par SqlMetal) incluent des surcharges de constructeur qui acceptent une chaîne de connexion. Il suffit de chercher la chaîne que vous voulez à partir ConfigurationManager (ou autre) et le transmettre dans

En fait, si vous ne me dérange pas de piratage directement le DBML, il ne supporte effectivement la lecture de ConfigurationManagerdirectement. le problème est que le concepteur de l'IDE déteste cela, et le casse chaque fois que vous le regardez. Ce qui est une honte (discussed here).

+0

Merci compagnon, appréciez, –

Questions connexes