Entity Framework: como retornar um tipo base de L2E
-
01-07-2019 - |
Pergunta
Considerando o seguinte arquitetura:
- um objeto base 'Entity'
- um objeto derivado 'Entrada: Base de dados'
- e um objeto ainda mais derivada 'CancelledEntry: Entry'
Em EntitySQL eu posso escrever o seguinte:
[...] where it is of (only MyEntities.Entry) [...]
para retornar apenas objetos do tipo de entrada e nenhuma entidade ou CancelledEntry.
Em LINQ to SQL, o seguinte comando irá retornar objetos do tipo Entrada e CancelledEntry.
EntityContext.EntitySet.OfType<Entry>()
O que é o / função sintaxe a utilizar apenas para retornar objetos do tipo Entry?
Solução
Por que você não aplicar um método de extensão em IQueryable
Este é um exemplo de como reutilizar linq fragmentos de consulta. Usando métodos de extensão em IQueryable
Outras dicas
Ok, eu ter encontrado uma solução parcial:
EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )
Este é bastante terrível no entanto, uma vez que se eu criar um novo objeto derivado, eu tenho que ir em todas as consultas e, especificamente, adicionar uma condição para removê-lo.
Tem que haver uma solução melhor