2010-04-22 5 views
2

J'ai besoin d'extraire des enregistrements de tables, qui sont dans deux diff. bases de données dans deux serveurs SQL différents.LINQ to SQL: Récupère les enregistrements de deux DB qui se trouvent sur des serveurs différents

Par exemple. Sales DB sur server1 et Purchase DB sur server2. Les bases de données Sales et Purchase ont un ensemble de tables, par exemple table1 dans Sales DB et table2 dans DB d'achat. Maintenant, j'ai besoin d'obtenir des enregistrements de table1 et table2 qui ont des enregistrements communs en les rejoignant. En utilisant T-SQL, je peux le faire en liant les serveurs puis en les désintéressant.

S'il vous plaît suggérer, comment puis-je le faire en utilisant LINQ to SQL comme je ne suis pas au courant.

Merci.

Répondre

0

Il existe (au moins) deux solutions possibles pour cela.

Vous pouvez définir une procédure stockée qui exécute la requête inter-base de données avec laquelle vous êtes déjà familier. Ajoutez la procédure stockée en tant que méthode dans votre contexte de données.

Ou, vous pouvez définir un contexte de données pour chaque base de données, puis sélectionnez la combinaison dans Linq. Quelque chose comme:

var table1records = from rec1 in context1.Table1 
        select rec1; 

var table2records = from rec2 in context2.Table2 
        select rec2; 

var combined = from rec1 in table1records 
       join rec2 in table2records on rec1.idColumn equals rec2.idColumn 
       select new 
       { 
       Rec1 = rec1, 
       Rec2 = rec2 
       }; 
0

Vous pouvez créer une vue dans DB1 qui fait référence à table2 sur DB2.

Questions connexes