2009-09-04 13 views
5

Dopo aver trascinato due tabelle da un database, passo a un altro e trascino una tabella in. Ora ricevo un messaggio se voglio sostituire la stringa di connessione con quella nuova. Voglio tabelle da più database in un DBML. È possibile?Tabelle da due diversi database in un DBML?

risposta

3

Non credo che ciò che si sta cercando sia possibile, dal momento che DataContext non avrebbe quindi alcun modo semplice per risolvere i risultati da due database separati.

Se stai cercando di creare oggetti di dominio da due database separati, la soluzione migliore sarebbe quella di avere due DBML separati, quindi utilizzare un bridge (GOF) o qualche altro modello di progettazione correlato per creare un'istanza degli oggetti del dominio.

+0

Hai collegamenti a come funzionerebbe? Penso di avere una situazione simile. Ho un database master che contiene un elenco di client e il nome del server e il nome del database per ciascuno dei client. Hanno tutti una struttura di database identica, quindi, vorrei riempire il modello da diversi database a seconda del client selezionato. – stephenbayer

+1

@stephenbayer - la tua situazione è in realtà un po 'diversa. Poiché i dati non sono effettivamente distribuiti su più DB, il tuo lavoro è un po 'più semplice. Creare un servizio (web, soap, resto, non ha importanza per questa discussione) che saprà come trovare una stringa di connessione o un prefisso del nome del database (più sicuro) per i propri DB. Utilizzare un identificativo client come indice per trovare il database specifico. La tua app può interrogare questo db del cliente per informazioni su come connettersi al db specifico. –

0

Un'altra opzione è creare un collegamento server sul database che punta all'altro e creare alias alle tabelle remote dal DB "locale". Credo che tu possa farvi riferimento come se fossero tutti nello stesso database.

+0

mentre questa è una risposta tecnicamente corretta, non sarebbe una pratica da seguire? Ho avuto a che fare con server collegati in passato e, secondo la mia esperienza, non è stato abbastanza in termini di manutenibilità o prestazioni –

5

È completamente possibile fare riferimento a più database all'interno dello stesso DBML, FORNITO quei database risiedono sullo stesso SQL Server.

In Visual Studio, fare clic con il pulsante destro del mouse sul DBML, fare clic su "Apri con ..." e selezionare Editor XML (Testo) con Codifica.

Vedrete il vostro primo tavolo che è stato trascinato nel look come questo:

< Table Name = "dbo.MyTable1fromMyDatabase1" Gli = "MyTable1fromMyDatabase1" >

per le tabelle da altri database che si desidera aggiungere, immetterli in questo modo:

< Nome tabella = "MyDatabase2.dbo.MyTable1daM yDatabase2" Gli = 'MyTable1fromMyDatabase2' >

Ciò funzionerà assumendo lo stesso login funziona per entrambi i database e le vostre espressioni LINQ può ora interrogare in entrambi i database!

0

Possiamo anche creare una vista che interroga la tabella nell'altro database. Possiamo selezionare, inserire e aggiornare questa vista, che influenzerà anche la tabella nell'altro database.

Problemi correlati