Array
(
)

Meio confuso em trabalhar com dois bancos de dados

Pjava
   - 19 out 2013

Preciso de uma idéia em como fazer. Preciso desenvolver um método para preencher um grid. Até aí, blz. Acontece que nessa grid preciso trazer o nome do cliente e é exatamente aí que reside a complicação. O nome do cliente, está em uma tabela em outro banco que não é o mesmo m que vou buscar os dados do grid. Pensei em criar uma lista com os nomes, mas quando vi a quantidade de nomes(mais de 500.000), aí percebi que não dava para carregar em uma lista. Bem, tive outra idéia, seria fazer um método que trouxesse o nome por ID, isso também se mostrou ineficiente, pois imagine se no grid eu carrego 1.000 linhas, fazer o método ser executado 1000 vezes seria improdutivo também(quebra de performance). Bem, a solução seria o seguinte. Fazer um LINQ passando os ID's no where desse LINQ e atribuir esse nome na minha query que carrega o grid(Outro Banco), é aí então que entra a questão. Não sei fazer isso, tipo assim:
select campo1,campo2,campo3,??????? from tabela1. Bem, onde está ??????? deverá vir o nome do cliente de outro banco na LINQ. Cara, ainda não consegui fazer isso. Essa foi a idéia de meu funcional, mas ele se foi e não consegui. Alguém tem alguma idéia, mesmo que diferente dessa e que dê uma excelente performance? Fazer select, incluindo outro banco no select é inviável no meu contexto, isso já pensei e já descartei. Obrigado.

Joel Rodrigues
   - 20 out 2013

Cara, confesso que nunca testei, mas TALVEZ valha a pena dar uma testada no seguinte: cria uma classe DTO (pesquise sobre esse padrão), em que no constructor você iniciaria o nome, pegando de outro banco, ou no set de alguma propriedade, com o Id.

Dvm.lc.ledcrash
   - 12 nov 2013

Que banco você está usando? Se for SQL Server, as bases estão no mesmo servidor / instância? Se sim, voce pode usar, por exemplo,

select * from <database>.<schema>.<table>

Assim, consigo fazer join ou usar duas tabelas de bases diferentes na mesma instância do banco.

Caso você esteja trabalhando com instâncias diferentes, você pode criar um LinkedServer entre elas e proceder da mesma maneira assim:

Via ManagementStudio, acesse um dos bancos. Expanda o Servidor e expanda Server Objects. Vai aparecer na lista a opção Linked Servers. Com o clique direito, adicione uma nova ligação. Basta você fazer um select chamando pela ligação como pode ser observado abaixo:

select * from <server>.<database>.<schema>.<table>