Meio confuso em trabalhar com dois bancos de dados
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.
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.
Pjava
Curtidas 0
Respostas
Joel Rodrigues
19/10/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.
GOSTEI 0
[desativado] Gonçalves
19/10/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>
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>
GOSTEI 0