Entity Framework: como retornar um tipo base de L2E

votos
0

Considerando o seguinte arquitetura:

  • um objeto base 'entidade'
  • um objecto 'Entrada: Base de dados de' derivado
  • e um objecto 'CancelledEntry: Entrada' adicional derivada

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>()

Qual é a função / sintaxe a utilizar para retornar apenas objetos do tipo Entry?

Publicado 20/09/2008 em 17:12
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Ok, eu ter encontrado uma solução parcial:

EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )

Isto é 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

Respondeu 20/09/2008 em 17:31
fonte usuário

votos
2

Por que você não aplicar um método de extensão em IQueryable <Introdução> chamado ApplyBaseEntryFilter (), que iria aplicar esse filtro e retornar um IQueryable <entry>.

Este é um exemplo de como reutilizar fragmentos de consulta LINQ. Usando métodos de extensão em IQueryable <Entity> é uma ótima maneira de reutilizar consultas como você deve Neve rneed para copiar e colar fragmentos de consulta em torno de sua aplicação, espero que ajude.

Respondeu 07/10/2008 em 07:50
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more