2012-03-30 19 views
7

Estoy usando EF4 para leer datos de una vista. Esta es una vista de resumen con grupo por etc. y es de solo lectura, no tiene una clave principal. Por lo tanto, para hacer la importación en EF4 usé un truco frecuentemente sugerido, es decir, usar ISNULL (columna, -11) como la primera columna en la vista. Esto ayuda a EF4 a inferir la clave principal e importar la vista.EF4 devuelve valores incorrectos al seleccionar desde la vista de resumen

Sin embargo, cuando selecciono de la vista en EF4, sucede algo muy extraño: obtengo datos incorrectos en comparación con cuando selecciono directamente desde la vista en Management Studio. No podía creer esto, lo intenté varias veces y el error persistió. Solo para asegurarme de haber creado una tabla en SQL Server, seleccione all from the view y acceda a la tabla en EF4. ¡Pero luego devuelve los datos correctos!

La vista no es muy complicada, excepto que se trata de una vista de resumen (agrupar por juntas) y utiliza una expresión de tabla común SQL (es decir, la cláusula with).

When I select straight in database using select * from vw_responserate I get 

coltext  SurveyId rowtext1 rowtext2   cnt 
Anwender 2 Angestellte/r Französische Schweiz 1 
Anwender 2 Angestellte/r Italienische Schweiz 1 
IT Spezialist 2 Angestellte/r Deutsche Schweiz 1 
IT Spezialist 2 Mittleres Management/Senior Management Italienische Schweiz 1 

When I select from EF4 I get 

coltext rowtext1 rowtext2 cnt 
Anwender  Angestellte/r Französische Schweiz 1 
Anwender  Angestellte/r Französische Schweiz 1 
IT Spezialist Angestellte/r Deutsche Schweiz 1 
IT Spezialist Angestellte/r Deutsche Schweiz 1 

Cualquier ayuda sería muy apreciada

gracias

+0

¿Puede explicar esto? * Obtengo datos incorrectos en comparación con cuando selecciono directamente desde la vista en Management Studio. * No vemos sus datos y no sabemos qué comportamiento incorrecto ve. –

+0

Hola, he actualizado mi pregunta para responder a su pregunta. Por favor, eche un vistazo a cualquier idea bienvenida – josephj1989

+1

¿Qué conjunto de columnas asignó como clave en EF? –

Respuesta

13

que tenía el mismo problema, el problema es que la clave definida para la vista no identifica de forma única una sola fila.

Al mirar los datos de muestra, su problema debe resolverse estableciendo coltext, rowtext1 y rowtext2 como la clave.

Esto puede hacerse a través del diseñador haciendo clic con el botón derecho en cada propiedad y seleccionando 'Clave de entidad'.

+0

¡Gracias! ¡Esto fue tan frustrante! Tengo una entidad que representa una Vista y por alguna razón tenía varias propiedades marcadas como EntityKeys. Seguí obteniendo errores de ref de objeto en cualquier momento que intenté conectar el dbset. Podría obtener el recuento de objetos (.Count), pero no hacer .ToList. Una vez que hice de mi clave principal la única EntityKey, todo funcionó. ¡¡Gracias, gracias, gracias!! – Airn5475

+0

O con el código primero, verifique su archivo de modelo y asegúrese de que la directiva [Key] esté en los campos correctos. –

+0

En una vista, esto se puede hacer en el navegador de modelos en la sección Modelos, en Entidades. (Puede ver pero no editar esta propiedad desde la sección de la tienda). – Greg

Cuestiones relacionadas