1
resposta

Usar o join na consulta

Em algum curso ensina a usar o join na consulta feita com o método? No primeiro curso do Entity ensina a usar o Include, é a mesma coisa?

1 resposta

Olá, Janile

A sintaxe de método não é muito legível para joins, e pode ficar bem confusa quando você decide fazer join com várias entidades.

Por exemplo, a seguinte sintaxe de consulta...

var result = from tar in contexto.Tarefas
             join stat in contexto.Status
             on tar.StatusId equals stat.Id
             select new { Tarefa = tar, Status = stat };

... é equivalente, na sintaxe de método (lambda):

var result = contexto.Tarefas
    .Join(contexto.Status,
          tar => tar.StatusId,
          stat => stat.Id,
          (tar, stat) => new
                       {
                           Tarefa = tar,
                           Status = stat
                       });

Já o Include permite que a consulta SQL gerada traga no seu resultado (isto é, na cláusula SELECT) as informações das entidades associadas. Por exemplo, a consulta ...

var tarefas = 
from tar in contexto.Tarefas
.Include(t => t.Status)
            select tar;

...irá garantir que o resultado (tarefas) conterá não só os dados da entidade primária (Tarefa) mas também trará as informações da entidade relacionada na propriedade de navegação Tarefa.Status. Isso permite acessar as informações de ambas as entidades:

var tarefaId = tar.Id;
var tarefaDescricao = tar.Descricao;
var statusId = tar.Status.Id;
var statusNome = tar.Status.Nome;