Entity Framework: tabla sin clave principal

Resuelto Cris asked hace 14 años • 20 respuestas

Tengo una base de datos existente con la que me gustaría crear una nueva aplicación usandoEF4.0

Algunas tablas no tienen claves principales definidas, por lo que cuando creo un nuevo modelo de datos de entidad, aparece el siguiente mensaje:

La tabla/vista TABLE_NAME no tiene una clave principal definida y no se pudo inferir ninguna clave principal válida. Esta tabla/vista ha sido excluida. Para utilizar la entidad, deberá revisar su esquema, agregar las claves correctas y descomentarlo.

Si quiero usarlos y modificar datos, ¿debo necesariamente agregar una PK a esas tablas o existe alguna solución para no tener que hacerlo?

Cris avatar Oct 22 '10 19:10 Cris
Aceptado

Creo que esto lo soluciona Tillito:

Vista de Entity Framework y SQL Server

Citaré su entrada a continuación:

Tuvimos el mismo problema y esta es la solución:

Para forzar que el marco de la entidad use una columna como clave principal, use ISNULL.

Para forzar que el marco de la entidad no use una columna como clave principal, use NULLIF.

Una manera fácil de aplicar esto es envolver la declaración de selección de su vista en otra selección.

Ejemplo:

SELECT
  ISNULL(MyPrimaryID,-999) MyPrimaryID,
  NULLIF(AnotherProperty,'') AnotherProperty
  FROM ( ... ) AS temp

Respondido el 26 de Abril, 2010 por Tillito (21 Puntos )

Colin avatar Oct 04 '2011 22:10 Colin

El error significa exactamente lo que dice.

Incluso si pudieras solucionar este problema, créeme, no querrás hacerlo. La cantidad de errores confusos que podrían introducirse es asombrosa y aterradora, sin mencionar el hecho de que su rendimiento probablemente se desplome.

No soluciones esto. Arregle su modelo de datos.

EDITAR: He visto que varias personas están rechazando esta pregunta. Supongo que está bien, pero tenga en cuenta que el OP preguntó acerca de mapear una tabla sin una clave principal, no una vista . La respuesta sigue siendo la misma. Solucionar la necesidad de EF de tener una PK en las tablas es una mala idea desde el punto de vista de la capacidad de administración, la integridad de los datos y el rendimiento.

Algunos han comentado que no tienen la capacidad de arreglar el modelo de datos subyacente porque están asignando a una aplicación de terceros. Esa no es una buena idea, ya que el modelo puede cambiar debajo de usted. Podría decirse que, en ese caso, querrás asignar a una vista, que, nuevamente, no es lo que solicitó el OP.

Dave Markle avatar Oct 22 '2010 12:10 Dave Markle