PROBLEMA
ERROR EN EJECUCIÓN: No se pudo convertir el tipo 'EntidadX' al tipo 'EntidadY'. LINQ to Entities sólo admite la conversión a tipos de enumeración o primitivos de EDM
Ocurre porque se intenta utilizar
una entidad derivada procedente del modelo de datos EDM (cuando estamos haciendo corresponder una tabla con toda unajerarquía de entidades) y que, por
tanto, no corresponde exáctamente con una conjunto de datos de nuestras
tablas. En nuestro caso la entidad base es EntidadX y la entidad derivada es EntidadY. El conjunto de datos (tabla) correspondientes a las dos entidades (ya que forman una única jerarquía) sería EntidadXSet.
Se mostrará el error de arriba, si intentamos hacer esta consulta:
Dim qElementosY As ObjectQuery(Of EntidadY) =
From objetoY As EntidadY In context.EntidadXSet _
Select objetoY
Dim listado = qElementosY.ToList)
Se mostrará el error de arriba, si intentamos hacer esta consulta:
Dim qElementosY As ObjectQuery(Of EntidadY) =
From objetoY As EntidadY In context.EntidadXSet _
Select objetoY
Dim listado = qElementosY.ToList)
SOLUCIÓN
Deberemos realizar la consulta de la siguiente manera (subrayo las diferencias):
Dim qElementosY As ObjectQuery(Of EntidadX) =
From objetoY As EntidadX In context.EntidadXSet.OfType(Of EntidadY)() _
Select objetoY
Dim listado = qElementosY.ToList)