2011-04-14 19 views
77

Estoy usando Entity Framework 4 con el enfoque Model First.¿Por qué recibo este error ?: No se ha especificado ninguna asignación para el siguiente EntitySet/AssociationSet - Entity1?

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

Luego tuve que volver y agregar otra entidad a mi modelo. Sin embargo, como Arrastro una entidad a la EDMX consigo este error:

enter image description here

Muy 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 evitar este error?

+1

Así puede generar script de base de datos de su modelo? –

+0

[Si está utilizando "Actualizar modelo desde la base de datos", tal vez esta publicación lo ayude] (http://stackoverflow.com/a/40085976/5713106) – Junior

Respuesta

124

Esto se debe a la forma en que EF4 funciona con el 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 hace clic en el elemento de 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 uno no se asigna, se activará un error de tiempo de compilación:

No mapping specified for the following 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 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 entidad nueva es Generate Database From Model nuevamente. Eso actualizará el SSDL y arreglará las asignaciones.

EDITAR

Si no se está utilizando "actualización de base de datos" modelo primero y, también tendrá este error en el caso que eliminó una tabla en la base de datos del servidor. Esto se debe a que Entity Framework no eliminará automáticamente la entidad por usted. Elimine la entidad manualmente y el error desaparecerá.

+1

Recibí el mismo problema después de actualizar mi modelo contra cambios bd (que no podría ser bueno, ya que mi enfoque no es el modelo primero). – balanza

+4

@balanza, cuando no está utilizando el modelo primero y actualiza su modelo basado en la base de datos, obtendrá este error cuando elimine una tabla en el servidor porque el diseñador EF NO eliminará la entidad automáticamente. Cuando elimine manualmente el tipo de entidad, el error desaparecerá –

+0

Cambié el mío directamente en el archivo xml del modelo de datos de la entidad. Tenía montones de tablas y funciones, y corría el riesgo de que no coincidan, así que lo hice de forma manual. –

29

Encontré 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.

+10

FYI: Verifique las propiedades de la asociación, y en la parte inferior "Restricción referencial" estará vacía. Haga clic en los puntos suspensivos y cree una restricción. –

+0

Esto me ayudó. Tuve que crear una relación 1 ... * desde mi entidad de origen a mi entidad de navegación. – duyn9uyen

4

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.

7

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.

15

Error 3027: No mapping specified for the following EntitySet/AssociationSet ..." - Entity Framework headaches

Si está desarrollando modelo con marco Entidades continuación, es posible que encuentre este error molesto a veces:

Error 3027: No mapping specified for the following EntitySet/AssociationSet [Entity or Association Name]

Esto puede no tener sentido cuando todo se ve bien en la EDM, pero eso es porque este el 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".

Ves, Entidades cheques contra la SSDL y MSL durante la construcción, así que si usted acaba de cambiar su EDM pero no lo utiliza Generar base de datos model ... entonces se queja de que hay cosas que faltan en sus secuencias de comandos SQL.

así, en definitiva, la solución es: "No se olvide de Generar base de datos model cada vez después de actualizar el EDM si usted está haciendo desarrollo del primer modelo espero que se solucione el problema.".

+0

Esto funcionó para este mismo error al hacer el modelo Generar base de datos ayudó a borrar la excepción – kolexinfos

0
  1. Ir al Explorador de soluciones, haga clic en el botón Buscar
  2. Dejar comprobado tanto Search within file content y Search External Files
  3. Escriba el nombre de las entidades que su asignación no está reconociendo.
  4. Borrar todos los archivos RELACIONADOS con el problema. Esos probablemente recibirán el nombre 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. Ellos se ven así:

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

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

Cuando se suelta una tabla en la base de datos, o simplemente se cambia el web.config.connectionStrings para la base de datos EF asignada, 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.

0

Tuve este error cuando eliminé 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.

2

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

La eliminación de la mesa y su re-adición lo corrigió.


Tenga en cuenta que si TFS está conectado, a continuación, hacer un registro de entrada de la edmx 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.

+0

Tuve el mismo problema después de un cambio de tabla. Encontré las mismas entidades con un número 1 y 2 (MyEntity1, MyEntity2) en varios lugares bajo el modelo. Busqué en cada rama (Diagramas, Tipos de entidades, etc.) y eliminé todas las instancias de MyEntity y MyEntity [n]. Por si fuera poco, hice una "Solución limpia" y luego la actualicé desde la base de datos para volver a agregar solo MyEntity. – MrsTapp

3

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

0

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 de modelos y lo asigné como resultado a la "edición de funciones importadas".

Lo añadiré aquí ya que parece que esta es la pregunta de dónde lo lleva google cuando recibe este error.

0

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.

0

Para aquellos que están usando Database First enfoque de todo lo que tiene que hacer después de la inserción de una nueva entidad es Generate Database From Model nuevo por clic derecho sobre el archivo y seleccione .edmxGenerate Database From Model...

Cuestiones relacionadas