ventajas que net framework first ejemplo desventajas code .net entity-framework entity-framework-4

.net - que - ¿Por qué recibo este error ?: No se ha especificado ninguna asignación para el siguiente EntitySet/AssociationSet-Entity1?



entity framework que es (12)

Error 3027: no se especificó la asignación para los siguientes EntitySet / AssociationSet ... "- Dolores de cabeza de Entity Framework

Si está desarrollando un modelo con Entities Framework, entonces puede encontrarse con este molesto error a veces:

Error 3027: no se especificó la asignación para el siguiente EntitySet / AssociationSet [Entity or Association Name]

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 por lo general. Lo que debería decir es "regenerar los archivos de su base de datos".

Verá, las entidades comprueban el SSDL y el MSL durante la compilación, de modo que si acaba de cambiar su EDM pero no utiliza 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 se olvide de generar el modelo de base de datos cada vez que actualice su EDM si está realizando el primer desarrollo del modelo. Espero que su problema esté resuelto".

Estoy utilizando Entity Framework 4 con el enfoque Model First.

Inicié el proyecto, diseñé las entidades y generé la base de datos. Todo funcionó bien

Luego necesitaba regresar y agregar otra entidad a mi modelo. Sin embargo, cuando arrastro una entidad al EDMX, aparece este error:

¡Bien! Solo necesito asignar Entity1 a una tabla ... ¡Pero oye! Estoy usando el enfoque Model First, espero que cree la tabla para mí cuando genero el DDL.

¿Cómo soluciono este error?


  1. Vaya a Solution Explorer, haga clic en el botón Buscar
  2. Deje marcado la Search within file content y la Search External Files
  3. Escriba el nombre de las entidades que su mapeo no reconoce.
  4. Eliminar todos los archivos RELACIONADOS con el problema. Esos probablemente serán nombrados después de la misma entidad faltante. NO elimine ningún archivo con su nombre de clase de contexto en el archivo, especialmente si sus extensiones son .cs o .tt. En el archivo Context .cs .
  5. eliminar todas las líneas de códigos que hacen referencia a la entidad faltante. Se verán así:

    public virtual DbSet< Entity1> Entity1 { get; set; }

Este error es común para las tablas eliminadas de la base de datos.

Cuando se suelta una tabla en la base de datos, o simplemente se cambia web.config.connectionStrings para la base de datos EF Mapped, para apuntar a una nueva y no a la utilizada para generar las asignaciones originales es el problema.

Es este nuevo db estas entidades con el error 3027 no están presentes.


Descubrí que recibía el mismo error porque había olvidado crear una restricción referencial después de crear una asociación entre dos entidades.


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 fue resuelto. No fue tan obvio como parece.


Esto se debe a la forma en que EF4 funciona con modelo primero.

Cuando crea por primera vez un modelo modelo primero, está en un estado que el SSDL no existe. Puede arrastrar entidades, asociarlas, etc., pero, si echa un vistazo al SSDL en el archivo EDMX, verá que ninguna de las entidades tiene una tabla de almacenamiento asociada en el SSDL.

Eso cambia cuando haces clic en la opción del menú contextual Generate Database From Model . 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 ingresará un estado en el cual cada entidad en el diseñador / CSDL debe mapear a una entidad en el SSDL. Si no se asigna, desencadenará un error de tiempo de compilación:

No se ha especificado ninguna asignación para el siguiente EntitySet / AssociationSet - (EntityName)

Otro hecho interesante es que no es el tipo de error que evitará la compilación. De hecho, generará la biblioteca de la clase 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 nuevamente. Eso actualizará el SSDL y arreglará 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 borre una tabla en el servidor de bases de datos. Esto se debe a que Entity Framework no eliminará automáticamente la entidad por usted. Elimine la entidad manualmente y el error desaparecerá.


Había establecido todo correctamente (cardinalidades y propiedades dependientes) pero no pude entender por qué sigo recibiendo un error. Finalmente descubrió que, EF generó una columna en la tabla dependiente por sí misma (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.


Me encontré con el mismo error, pero no estaba usando el modelo primero. Resultó que de alguna manera mi archivo EDMX contenía una referencia a una tabla a pesar de que 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 para encontrar la referencia a la tabla ofensiva en el archivo EDMX, y luego (cuidadosamente) eliminé todas las referencias a la tabla. Lamento decir que no sé cómo el archivo EDMX entró en este estado en primer lugar.


Para aquellos que están usando el enfoque de Database First , todo lo que deben hacer después de insertar una nueva entidad es Generate Database From Model nuevamente haciendo clic derecho en su archivo .edmx y selecciona Generate Database From Model...


Tenía este error cuando borré una tabla de la base de datos. Lo resolvió haciendo clic derecho en el diagrama de EDMX, yendo a Propiedades, seleccionando la tabla de la lista en la ventana Propiedades y eliminándola (usando la tecla de borrar) del diagrama.


Tuve el error cuando estaba tratando de hacer un resultado personalizado para un procedimiento almacenado y asumí que tenía que ser una entidad.

La solución fue que acabo de hacer un tipo complejo en el navegador del Modelo y lo asigné como resultado a la "edición de funciones importadas".

Lo agregaré aquí ya que parece que esta pregunta es a dónde lo lleva google cuando obtiene este error.


Tuve un cambio de tabla y creó otra entidad con un número 1 al final (como MyEntity1 y MyEntity ) confirmada por el navegador de modelos de edmx. Algo sobre las dos entidades juntas confundió el procesamiento.

La eliminación de la tabla y su nueva adición lo arreglaron.

Tenga en cuenta que si TFS está conectado, realice un check-in del edmx in después de la eliminación. Luego, y solo luego, obtenga lo último y vuelva a agregarlo en un proceso definido de dos pasos. De lo contrario, TFS se confunde con la eliminación y el reabastecimiento de la (s) misma (s) entidad (s) nombrada (s) que parecen causar problemas.


Una forma más rápida para mí fue eliminar las tablas y volver a agregarlas. Los mapea automáticamente. :)