2011-05-19 26 views
28

tengo este error cuando construyo mi servicio web:Error 3004: Problema en el fragmento de la cartografía a partir de la línea

Error 3004: Problema en el mapeo fragmento a partir de la línea 323: No se asignación especificada para las propiedades JE_TRN_HS.JE_HDR_HSJE_HDR_KEY. La entidad es tipo [TESTCPModel.JE_TRN_HS

Esto es lo que sucedió. Creé este Modelo de datos de entidad a partir de una base de datos existente. Agregué 2 tablas y reconstruí el servicio web. La construcción fue exitosa.

ENTONCES he añadido una Asociación entre las dos tablas. ¡Cuando traté de reconstruir, falló con el mensaje de error que se muestra arriba!

Ahora aquí está el truco! Eliminé la Asociación recién agregada y la reconstruí. ¿La compilación falló con el mismo mensaje de error? La única manera en que puedo deshacerme de este error es si elimino la segunda tabla, ¿reconstruyo y vuelvo a agregar la segunda tabla?

¡He buscado en TODAS PARTES la solución a este problema! Gracias Steve

Respuesta

2

No puede simplemente agregar tablas de la base de datos a su modelo y luego crear una nueva asociación en el modelo. Por defecto, utiliza una asociación independiente que debe asignarse a su contraparte de base de datos = la relación también debe existir en la base de datos. Debe model your relation as FK association, pero solo permite asociaciones uno a uno y uno a muchos. Las diferencias entre los tipos de asociación son described here.

29

En mi caso no puedo modificar las tablas existentes pero descubrí que cuando agrega una nueva tabla con "Incluir columnas de clave externa en el modelo" marcada en EF4 y la tabla no contiene ninguna relación de clave externa, entonces Intenta agregar una asociación, desencadenará este error.

Defining Constraints in an EF4 model that don’t exist in the database


En caso de que desaparezca el artículo enlazado, la solución es:

Usted necesidad de abrir la ventana de propiedades de la asociación y luego haga clic en los puntos suspensivos Referencial de restricción para llegar a que el árbitro diálogo de restricción. Luego seleccione el campo correcto para la configuración 'Propiedad dependiente'.

+1

Buena respuesta. Tuve el mismo problema y después de leer esta respuesta, en lugar de trabajar en la ventana de propiedades, eliminé la clase correspondiente a mi tabla y le di un comando de actualización al Modelo. Recreó la clase de objeto y solucionó el problema de la clave externa. Ahora es perfecto. Gracias a la respuesta –

0

Tuve este problema cuando terminé 'actualizando el modelo de la base de datos' después de haber cambiado la cadena de conexión.

Haciendo clic con el botón derecho en la entidad y activando y desactivando una tecla Parece que ha causado una actualización y ha solucionado el problema. Esto parece más un error con el marco de la Entidad.

Cabe señalar que en este caso estaba usando el conector MySQL, así que sospecho que es bastante quisquilloso en general.

12

En mi caso, otro desarrollador eliminó el campo de la tabla en la base de datos. Habiéndose dado cuenta de esto, eliminar la tabla del modelo de entidad y volver a agregarla resolvió el problema.

+0

tuvo el mismo problema exacto. Gracias) –

0

Puede obtener este error si tiene una propiedad en el modelo que no se puede cartografiar.

Por ejemplo, estaba convirtiendo algunos Linq2Sql en EF6 y tenía un error en un campo Binary. Binary es del tipo System.Data.Linq, pero para EF debe ser byte[]. Cambiarlo solucionó el problema.

0

experimentado un problema similar con EF 6:

exception.InnerException 
{"\r\nEntities.EAM.msl(458,10) : error 3004: Problem in mapping fragments starting at line 458:No mapping specified for properties InspectionPdfReportRequest.SyncDate in Set InspectionPdfReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n Entity is type [Model.Entities.InspectionPdfReportRequest]\r\n\r\nEntities.EAM.msl(488,10) : error 3004: Problem in mapping fragments starting at line 488:No mapping specified for properties InspectionReportRequest.SyncDate in Set InspectionReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n Entity is type [Model.Entities.InspectionReportRequest]\r\n"} 
    Data: {System.Collections.ListDictionaryInternal} 
    HResult: -2146232032 
    HelpLink: null 
    InnerException: null 

El problema resultó ser que me había hecho un cambio en el archivo * .edmx para mi aplicación de base de datos EF-primero directamente en un editor de texto en lugar de usar el diseñador. Así que simplemente revirtió los cambios de texto y los aplicó usando el diseñador y el error desapareció. Pulsar guardar en el diseñador es lo que actualizó el archivo * .msl asociado.

0

Recibí este error de Linqpad y no pude entender por qué comenzó a suceder de repente y si esto sería un problema en mi aplicación utilizando el contexto. También eliminé la clase que fue creada recientemente por una nueva entidad y luego hice clic derecho en el archivo .tt y presioné "ejecutar al cursor" para regenerar la clase. Eso lo solucionó para mí.

Cuestiones relacionadas