3
respostas

Como retornar dados de duas tabelas em único objeto

Boa tarde,

Qual context eu utilizo para guardar o resultado da query , pois são modelos diferentes ?

Eu tentei usar linq mas esta demorando para retornar e as vezes esgota o tempo limite e ocorre um erro.


                query = SELECT USUARIO_COL1, PRODUTO_COL1 FROM USUARIO_TABLE, PRODUTO_TABLE 
                WHERE USUARIO_COL3 = @USUARIO_COL3  && USUARIO_COL2 == PRODUTO_COL2

              IList<PRODUTO> produtos = new List<PRODUTO>();
               IList<USUARIO> usuarios = new List<USUARIO>();

            SqlParameter Usuario_NUM = new SqlParameter("@USUARIO_COL3 ", codigoClienteAdaptado);

           usuarios  = ctx.usuarios .SqlQuery(query, new SqlParameter[] { Usuario_NUM }).ToList();
3 respostas

Olá Rafael,

uma coisa que você pode fazer é retornar um objeto anônimo que dentro dele estará o Produto e o Usuário. Aqui um link com um exemplo que mostra como fazer isso com o LINQ para filtrar o id de duas tabelas diferentes. No seu caso seriam dois modelos diferentes ao invés de só o id.

Quanto a lentidão, pode ser a sua condição no where que está deixando a query lenta. Porque no fundo está juntando duas tabelas diferentes e a única condição de restrição é que ambas tem que ter valores iguais em uma coluna. Mas veja se com o objeto anônimo no LINQ ele tem uma performance melhor.

Quando faço a consulta direto pelo banco de dados ele retorna rápido as colunas, porém pela API usando linq ele demora. Gostaria de saber se isso é normal ?

Não deveria ser tão mais lento assim. Só se a quantidade de informações retornadas estiver muito grande e ocupando muito espaço de memória.