Entity Framework: tabla sin clave principal
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?
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 )
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.