Eu quero filtrar por uma coluna de um objecto Incluido usando EF 6.
Então já entendi que tenho de usar:
var selecionados = contexto.Processos.Include(p => p.Clientes);
Clientes é uma IList genérica que tem Clientes PJ e PF.
E para selecionar pelo ID do Cliente posso usar:
selecionados = selecionados.Where(pc => pc.Clientes.Any(c => c.ClienteID == model.ClienteID));
Até aí tudo bem.
O problema é que a tabela de Clientes é uma tabela de Herança. Cliente é pai e ClientePF e ClientePJ são filhos. A principio Cliente é abstract, nem pode ser instanciado.
Como faço para fazer um filtro por um determinado CNPJ
seria algo assim:
selecionados = selecionados.Where(pc => pc.Clientes.Any(c => c.CNPJ == model.CNPJ));
Mas quando digito essa linha ele sublinha o c.CNPJ indicando que esse campo não existe. E realmente não existe no Pai, só em um dos filhos.
Esse campo c.CNPJ existe na entidade ClientePJ mas não aparece na entidade Cliente.
Então a clausula acima não é possível.