Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Consulta em contextos diferentes

É possível fazer uma consulta com joins entre dois contextos diferentes (tabelas de bancos diferentes)?

Por exemplo:

var ctx1 = new ContextA();
var ctx2 = new ContextB();

var produtos = (from ctx1.produtos
                select new Produto()).Distinct().ToList();

var compras = (from  ctx2.clientes c
join   produtos p on c.clienteID equals p.idCliente
select new Compra{}).Distinct().ToList();
4 respostas

Alguns bancos possuem mais de um esquema no mesmo banco de dados, para isso é possível fazer join tranquilamente... para join com tabelas de bancos diferente a solução seria um data link, porém os DBAs não gostam da solução pela performance...

Olá, Evandro. Obrigado pela resposta. A minha intenção é justamente evitar usar data link.

solução!

Oi Ygor, tudo bem?

Teoricamente é possível sim. Você conseguiu fazer o join entre as tabelas de produtos e de compras acima? Recomendo remover o .ToList() das duas consultas iniciais, para não trazer os resultados antecipadamente. Isso pode congestionar a rede e consumir muita memória caso as tabelas sejam muito grandes. Sempre utilize o .ToList() em último caso, quando realmente precisar "materializar" o resultado da consulta.

Olá, obrigado pelas respostas.

Para poder fazer a consulta entre contextos diferentes, eu passei os ids que eu precisava como um Array e usei Contains() no outro contexto para fazer a consulta.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software