web-dev-qa-db-fra.com

Erreur 3004: Problème dans le fragment de mappage commençant à la ligne

J'ai cette erreur lorsque je crée mon service Web:

Erreur 3004: Problème de mappage fragment commençant à la ligne 323: No mappage spécifié pour les propriétés JE_TRN_HS.JE_HDR_HSJE_HDR_KEY. Entité est de type [TESTCPModel.JE_TRN_HS

C'est ce qui est arrivé J'ai créé ce modèle de données d'entité à partir d'une base de données existante . J'ai ajouté 2 tables et reconstruit le service Web. La construction a été réussie.

ALORS j'ai ajouté une association entre les deux tables. Lorsque j'ai essayé de reconstruire, le message d'erreur affiché ci-dessus a échoué!

Maintenant, voici le kicker! J'ai supprimé l'association nouvellement ajoutée et reconstruit. La construction a échoué avec le même message d'erreur !? Le seul moyen de me débarrasser de cette erreur est de supprimer la deuxième table, de la reconstruire et d’ajouter la deuxième?

J'ai cherché PARTOUT la solution à ce problème! Merci Steve.

33
Steve Kershaw

Dans mon cas, je ne suis pas autorisé à modifier les tables existantes, mais j'ai découvert que, lorsque vous ajoutez une nouvelle table avec l'option "Inclure les colonnes de clé étrangère dans le modèle" cochée dans EF4 et que la table ne contient aucune relation de clé étrangère, association cela déclenchera cette erreur.

Définition de contraintes dans un modèle EF4 qui n'existent pas dans la base de données


Si l'article lié disparaît, la solution est:

Vous devez ouvrir la fenêtre de propriétés de l'association, puis cliquer sur les ellipses de contrainte de référence pour accéder à la boîte de dialogue Référence de contrainte. Sélectionnez ensuite le champ approprié pour le paramètre 'Propriété dépendante'.

34
Carlos

Dans mon cas, un autre développeur avait supprimé le champ de la table dans la base de données. Après avoir réalisé cela, supprimer le tableau du modèle d'entité et le rajouter a résolu le problème.

21
Graham Laight

Vous ne pouvez pas simplement ajouter des tables de la base de données à votre modèle, puis créer une nouvelle association dans le modèle. Par défaut, il utilise une association indépendante qui doit être mappée sur son équivalent dans la base de données = la relation doit également exister dans la base de données. Vous devez modéliser votre relation en tant qu'association FK mais cela permet uniquement des associations un à un et un à plusieurs. Les différences entre les types d’association sont décrites ici .

2
Ladislav Mrnka

J'ai eu ce problème lorsque j'ai fini par "mettre à jour le modèle à partir de la base de données" après avoir modifié la chaîne de connexion. 

En cliquant avec le bouton droit de la souris sur l'entité et en activant et désactivant une clé, il semble avoir provoqué une actualisation et résolu le problème. Cela ressemble plus à un bogue avec le framework Entity.

Il est à noter que dans ce cas, j'utilisais le connecteur MySQL, donc je suppose que c'est plutôt difficile en général.

0
Highstead

L'option Mettre à jour le modèle à partir d'une base de données ne fonctionne pas pour moi. 

Je dois donc d'abord supprimer toutes les entités avant de mettre à jour le modèle à partir de la base de données pour résoudre correctement la solution.

0
Willy David Jr

Si vous avez appliqué un mappage sur l'entité, essayez de supprimer cette colonne de la table, ce qui résoudra le problème.

0
Vidhya A

Vous pouvez obtenir cette erreur si vous avez une propriété sur le modèle qui n'est pas mappable.

Par exemple, je convertissais un Linq2Sql en EF6 et j'avais une erreur sur un champ Binary. Le binaire est un type System.Data.Linq, mais pour EF, il doit être byte[]. Le changer a résolu le problème.

0
Simon_Weaver

Je recevais cette erreur de Linqpad et je ne pouvais pas comprendre pourquoi cela avait commencé à se produire soudainement et si cela poserait un problème dans mon application en utilisant le contexte. Je viens également de supprimer la classe récemment créée par une nouvelle entité, puis de cliquer avec le bouton droit de la souris sur le fichier .tt et d'appuyer sur "run to cursor" pour régénérer la classe. Cela a réglé le problème pour moi.

0
spatemp

Expérimenté un problème similaire avec 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

Le problème s'est avéré être que j'avais modifié le fichier * .edmx pour mon application de base de données EF d'abord dans un éditeur de texte au lieu d'utiliser le concepteur. Donc, juste annulé les modifications de texte et les a appliquées à l'aide du concepteur et l'erreur a disparu. En cliquant sur Enregistrer dans le concepteur, vous avez mis à jour le fichier * .msl associé.

0
user8128167