No exemplo da aula, uma coisa não ficou explícita pra mim. Ao selecionar os produtos de determinada categoria, quando utilizamos o FirstOrDefault, esse método não traz apenas um registro? Não se deveria usar o ToList?
Já na busca realizada, quando dentro do include colocamos o c.Produtos, esse produto que estamos acessado é a lista que está dentro da classe categoria, certo?