linq-to-sql - entre - linq inner join c# entity framework
Discrepancia de resultados de Entity Framework para una vista de base de datos (2)
El mismo problema para mi. Se generó automáticamente una Vista de entidad ( VReport
) desde el asistente VS2010 a algo como:
class VReport
Line: int (key)
Desc: string
Date: DateTime
Cuando recuperé los registros de la base de datos, la consulta SQL se formó correctamente y devolvió los resultados esperados (y distintos), pero Entity Framework devolvió una gran cantidad de registros duplicados.
Pero en su lugar, también la columna / campo Fecha tendría que participar en la formación la CLAVE de la entidad
Entonces, para resolver este problema, cambié la propiedad del campo de Clave de Entidad : falso -> verdadero
class VReport
Line: int (key)
Desc: string
Date: DateTime (key)
Tengo una vista específica creada en mi base de datos (une aproximadamente 5-6 tablas con una combinación izquierda). Esta vista se agrega a mi edmx (framework de entidades 1.0). Recientemente me di cuenta de que uno de los registros de columna obtenidos con edmx (linq para entidades y luego ToList ()) se duplicaron varias veces, aunque en la vista de la base de datos eran diferentes.
Column-N (Expected result/ result from DB view)
---------
data1
data2
data3
data4
data5
Column-N(Actual result generated by entity framework)
---------
data1
data1
data1
data1
data1
Abrí mi perfil de SQL, obtuve la consulta que mi aplicación envió al servidor SQL, la ejecuté y me devolvió el resultado esperado.
MSDN tiene una publicación similar here y here pero el moderador no ha explicado cómo resolver este problema. Mi clave pasa a ser un GUID
Creo que la causa principal que mencionó es correcta, el problema está en el mapeo de EF de la aplicación, ya que EF tiene diferentes reglas de mapeo de objetos con base de datos. cuando los resultados de la consulta hayan sido devueltos desde la base de datos, el EF realizará el mapeo en la memoria de la aplicación de acuerdo con su propia lógica diseñada.
Es importante tener en cuenta esta lógica al diseñar su consulta de vista en el lado de su base de datos. Creo que deberías hacer algún ajuste en tu consulta de vista.
No estoy seguro de si ha solucionado el problema; si no, proporcione la estructura de la base de datos relacionada con este problema y la consulta de vista que ha escrito.
Gracias binze
¿Alguien ha encontrado un problema similar antes?
El problema es, de hecho, con la clave. Tiene que a) tener un identificador único para cada fila en la vista. y b) mapear esa clave en consecuencia en el edmx. De lo contrario, como indica su cita, la lógica de mapeo verá cada fila subsiguiente y verá que puede usar la misma instancia de objeto que devolvió antes.