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


Estoy usando Entity Framework 4 con el Primer enfoque del Modelo.

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

Entonces tuve que volver y agregar otra entidad a mi modelo. Sin embargo, al arrastrar una entidad al EDMX obtengo este error:

introduzca la descripción de la imagen aquí

Muy bien! Solo necesito mapear Entity1 a una mesa.. Pero hey! Estoy usando el primer enfoque de modelo, espero que cree la tabla para mí cuando genere el DDL.

¿Cómo puedo evitar este error?

Author: André Pena, 2011-04-14

13 answers

Esto se debe a la forma en que EF4 funciona con model-first.

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

Eso cambia al hacer clic en el elemento del menú contextual Generate Database From Model. La parte confusa es que esta acción hace más que simplemente generar un Guión 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 que cada entidad en el diseñador/CSDL debe mapearse a una entidad en el SSDL. Si uno no mapea, se activará un error de tiempo de compilación:

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

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?

Para evitar este error, todo lo que tiene que hacer después de insertar una nueva entidad es volver a Generate Database From Model. Eso actualizará el SSDL y arreglará las asignaciones.

EDITAR

Si no está utilizando model-first y "actualizar desde la base de datos", también tendrá este error en el caso de que haya eliminado una tabla en el servidor DB. Esto se debe a que Entity Framework no eliminará automáticamente la entidad por usted. Eliminar la entidad manualmente y el error desaparecerá.

 132
Author: André Pena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-07 12:11:19

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

 32
Author: Mal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-16 10:30:01

Error 3027: No se ha especificado ninguna asignación para el siguiente EntitySet/AssociationSet ..."- Entity Framework dolores de cabeza

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

Error 3027: No se ha especificado ninguna asignación para el siguiente EntitySet/AssociationSet [Nombre de Entidad o Asociación]

Esto puede no tener sentido cuando todo se ve bien en el EDM, pero eso es porque este error no tiene nada que ver con el EDM generalmente. Lo que debería decir es"regenerar sus archivos de base de datos".

Verá, Entities comprueba con el SSDL y MSL durante la compilación, por lo 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 Modelo de base de datos cada vez después de actualizar su EDM si está haciendo model first development. Espero que tu el problema está resuelto".

 17
Author: Azeem ahmad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-01 05:50:31

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 quité estas tablas de la entidad, el problema se resolvió. No era tan obvio como parece.

 7
Author: Graham Laight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-26 17:09:29

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 a pesar de que no apareció en el diseñador. Curiosamente, cuando hice una búsqueda de texto para el nombre de la tabla en Visual Studio (2013) la tabla no se encontró.

Para resolver el problema, utilicé un editor externo para encontrar la referencia a la tabla infractora en el archivo EDMX, y luego (cuidadosamente) eliminé todas las referencias a la tabla. Lamento decir que No sé cómo el archivo EDMX llegó a este estado en primer lugar.

 4
Author: batpox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-07 10:18:36

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

La eliminación de la tabla y volver a añadirla lo 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 obtener la última y volver a añadir en un proceso definido de dos pasos. De lo contrario TFS se confunde con la eliminación y re-adición de entidades con el mismo nombre que parecen causar problemas.

 4
Author: ΩmegaMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-03 14:45:59

Una forma más rápida para mí era eliminar las tablas y volver a añadirlas. Los mapeó automáticamente. :)

 3
Author: Atul K.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-22 07:31:26

Para aquellos que están utilizando Database First enfoque todo lo que tiene que hacer después de insertar una nueva entidad es Generate Database From Model de nuevo haciendo clic derecho en su archivo .edmx y seleccione Generate Database From Model...

 1
Author: Masoud Darvishian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-26 06:43:26

Tuvo este error cuando borré una tabla de la base de datos. Solucionado haciendo clic derecho en el diagrama EDMX, yendo a Propiedades, seleccionando la tabla de la lista en la ventana Propiedades, y borrándola (usando la tecla eliminar) del diagrama.

 0
Author: live-love,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-08 17:56:18
  1. Vaya al Explorador de soluciones, haga clic en el botón Buscar
  2. Dejar marcado tanto Search within file content como Search External Files
  3. Escriba el nombre de las entidades que la asignación no reconoce.
  4. Elimine todos los archivos RELACIONADOS con el problema. Esos probablemente serán nombrados por la misma entidad faltante. NO elimine ningún archivo con su nombre de clase de contexto en el archivo, especialmente si sus extensiones lo son .cs o. tt. En el Contexto .cs file .
  5. Eliminar todas las líneas de códigos que hacen referencia a la entidad desaparecida. Se verán así:

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

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

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

Es esta nueva base de datos estas entidades con el error 3027 no están presentes.

 0
Author: MarcoSantana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-26 14:29:29

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 solo hice un tipo complejo en el navegador de modelos y lo asigné como resultado a las "Importaciones de función de edición".

Lo agregaré aquí ya que parece que esta pregunta es a dónde te lleva Google cuando obtienes este error.

 0
Author: Thomas Koelle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-26 14:07:10

Había establecido todo correctamente (cardinalidades y propiedades dependientes) pero no podía averiguar por qué sigo recibiendo errores. Finalmente se dio cuenta de que, EF generó una columna en la tabla dependiente por su cuenta (table_tablecolumn) y no tiene ninguna relación con la tabla, por lo que no se especificó ninguna asignación. Tuve que eliminar la columna en el archivo EDMX y reconstruir la solución que solucionó el problema. Estoy usando el enfoque DB.

 0
Author: user2965957,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-06 01:54:56

Actualizar el modelo desde la base de datos no funciona para mí.

Tuve que eliminar la entidad en conflicto, luego ejecutar el Modelo de actualización de la base de datos y, por último, reconstruir la solución. Después de eso, todo funciona bien.

 0
Author: Willy David Jr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-28 20:38:59