Estoy usando Entity Framework 4 con el enfoque Model First.
Empecé el proyecto, diseñé las entidades y generé la base de datos. Todo funcionó bien.
Luego tuve que regresar y agregar otra entidad a mi modelo. Sin embargo, cuando arrastro una entidad al EDMX, aparece este error:
¡Bien! Solo necesito mapear Entity1 a una tabla .. ¡Pero bueno! Estoy usando el enfoque Model First, espero que me cree la tabla cuando genere el DDL.
¿Cómo puedo solucionar este error?
.net
entity-framework
entity-framework-4
André Pena
fuente
fuente
Respuestas:
Esto se debe a la forma en que EF4 funciona con model-first.
Cuando crea por primera vez un modelo de modelo primero, está en un estado en el que el SSDL no existe. Puede arrastrar entidades, asociarlas, etc. y, sin embargo, si observa la SSDL en el archivo EDMX, verá que ninguna de las entidades tiene una tabla de almacenamiento asociada en la SSDL.
Eso cambia cuando hace clic en el
Generate Database From Model
elemento del menú contextual. La parte confusa es que esta acción hace más que simplemente generar un script DDL. De hecho, cambia el archivo EDMX para incluir información SSDL. A partir de este punto, el archivo EDMX entrará en un estado en el que cada entidad del diseñador / CSDL debe mapearse a una entidad del SSDL. Si uno no se asigna, activará un error de tiempo de compilación:Otro hecho interesante es que no es el tipo de error que impedirá la compilación. De hecho, generará la biblioteca de clases de salida. ¿No debería ser una advertencia o algo así?
Para evitar este error, todo lo que tiene que hacer después de insertar una nueva entidad es
Generate Database From Model
volver a hacerlo . Eso actualizará el SSDL y corregirá las asignaciones.EDITAR
Si no está utilizando el modelo primero y "actualiza desde la base de datos", también tendrá este error en el caso de que haya eliminado una tabla en DB Server. Esto se debe a que Entity Framework no eliminará automáticamente la entidad por usted. Elimine la entidad manualmente y el error desaparecerá.
fuente
Descubrí que estaba obteniendo el mismo error porque había olvidado crear una restricción referencial después de crear una asociación entre dos entidades.
fuente
Si está desarrollando un modelo con Entities Framework, a veces puede encontrarse con este molesto error:
Esto puede no tener sentido cuando todo se ve bien en el EDM, pero eso se debe a que este error no tiene nada que ver con el EDM normalmente. Lo que debería decir es "regenerar los archivos de su base de datos".
Verá, las entidades verifican el SSDL y el MSL durante la compilación, por lo que si acaba de cambiar su EDM pero no usa Generar modelo de base de datos ... entonces se queja de que faltan cosas en sus scripts sql.
así que, en resumen, la solución es: "No olvide generar el modelo de base de datos cada vez que actualice su EDM si está desarrollando el primer modelo. Espero que su problema esté resuelto".
fuente
En mi caso, otro desarrollador había eliminado algunas de las tablas de la base de datos subyacente. Cuando me di cuenta de esto y eliminé estas tablas de la entidad, el problema se resolvió. No fue tan obvio como parece.
fuente
Me encontré con el mismo error, pero no estaba usando model-first. Resultó que de alguna manera mi archivo EDMX contenía una referencia a una tabla aunque no aparecía en el diseñador. Curiosamente, cuando hice una búsqueda de texto para el nombre de la tabla en Visual Studio (2013), no se encontró la tabla.
Para resolver el problema, utilicé un editor externo (Notepad ++) para encontrar la referencia a la tabla ofensiva en el archivo EDMX, y luego (con cuidado) eliminé todas las referencias a la tabla. Lamento decir que no sé cómo el archivo EDMX llegó a este estado en primer lugar.
fuente
Tuve un cambio de tabla y creó otra entidad con un número 1 al final (como
MyEntity1
y aMyEntity
) según lo confirmado por el navegador de modelos edmx. Algo acerca de las dos entidades juntas confundió el procesamiento.La eliminación de la mesa y volver a agregarla la arregló.
Tenga en cuenta que si TFS está conectado, haga un check-in del edmx después de la eliminación. Entonces, y solo entonces, obtenga la última versión y vuelva a agregarla en un proceso definido de dos pasos. De lo contrario, TFS se confunde con eliminar y volver a agregar entidades con el mismo nombre, lo que parece causar problemas.
fuente
Una forma más rápida para mí fue eliminar las tablas y volver a agregarlas. Los asignó automáticamente. :)
fuente
Para aquellos que están usando el
Database First
enfoque, todo lo que tienen que hacer después de insertar una nueva entidad esGenerate Database From Model
volver a hacer clic con el botón derecho en su.edmx
archivo y seleccionarGenerate Database From Model...
fuente
Tuve este error cuando borré una tabla de la base de datos. Lo resolvió haciendo clic derecho en el diagrama EDMX, yendo a Propiedades, seleccionando la tabla de la lista en la ventana Propiedades y eliminándola (usando la tecla de borrar) del diagrama.
fuente
Search within file content
ySearch External Files
elimine todas las líneas de códigos que hagan referencia a la entidad que falta. Se verán así:
Este error es común a las tablas eliminadas de la base de datos.
Cuando se coloca una tabla en la base de datos, o simplemente se cambia la
web.config.connectionStrings
de la base de datos EF Mapped, el problema es apuntar a una nueva y no a la utilizada para generar las asignaciones originales.Es esta nueva base de datos, estas entidades con el error 3027 no están presentes.
fuente
Tuve el error cuando intentaba hacer un resultado personalizado para un procedimiento almacenado y asumí que tenía que ser una entidad.
La solución fue que hice un tipo complejo en el navegador de modelos y lo asigné como resultado a "Editar funciones de importación".
Lo agregaré aquí, ya que parece que esta pregunta es a dónde lo lleva Google cuando recibe este error.
fuente
Había configurado todo correctamente (cardinalidades y propiedades dependientes) pero no podía entender por qué sigo recibiendo errores. Finalmente descubrió que, EF generó una columna en la tabla dependiente por sí sola (table_tablecolumn) y no tiene ninguna relación con la tabla, por lo que no se especificó ningún mapeo. Tuve que eliminar la columna en el archivo EDMX y reconstruir la solución que solucionó el problema. Estoy usando el enfoque DB.
fuente
Actualizar modelo de base de datos no funciona para mí.
Tuve que eliminar la entidad en conflicto, luego ejecutar Update Model from Database, finalmente reconstruir la solución. Después de eso, todo funciona bien.
fuente
Compartiendo esto con otras personas. En mi caso, estábamos trabajando en una solución MVC compartida y usando un módulo común para tablas que usamos para menús desplegables. Recibí el error cuando actualicé el modelo de Entidad agregando una nueva tabla. Resulta que cuando actualicé el EDMX, probablemente actualizó mis derechos de acceso a la base de datos, lo que resultó en no tener acceso a esa determinada tabla que me da
no mapping specified
.Simplemente volver a agregar y dar acceso a mi usuario resolvió el problema.
fuente
Creo que obtuve esto al no eliminar explícitamente algunas tablas del edmx antes de cambiarles el nombre y volver a agregarlas. En su lugar, simplemente renombré las tablas y luego hice un modelo de actualización de la base de datos, pensando que las vería desaparecer y las eliminaría del modelo. Luego hice otro modelo de actualización de la base de datos y agregué las tablas renombradas.
El sitio estaba trabajando con las nuevas tablas, pero tuve el error. Finalmente, noté que las tablas originales todavía estaban en el modelo. Los eliminé del modelo (haga clic en ellos en la pantalla edmx, elimine la clave) y luego desapareció el error.
fuente