Erreur de fragment de mappage Entity Framework 4 lors de l’ajout d’un nouveau scalaire d’entité

J’ai un design Entity Framework 4 en premier. Je crée une première ébauche de mon modèle dans le concepteur et tout allait bien. J’ai compilé, généré la firebase database, etc.

Plus tard, j’ai essayé d’append une chaîne scalaire (Nullable = true) à l’une de mes entités existantes et j’obtiens toujours ce type d’erreur lorsque je comstack:

Erreur 3004: Problème lors du mappage des fragments à partir de la ligne 569: aucun mappage spécifié pour les propriétés MyEntity.MyValue dans Set MyEntities. Une entité avec clé (PK) ne fera pas le tour si: L’entité est de type [MyEntities.MyEntity]

Je dois continuer à ouvrir manuellement le fichier EDMX et à corriger le code XML chaque fois que j’ajoute des scalaires.

Des idées sur ce qui se passe?

J’ai depuis découvert qu’après avoir ajouté / modifié / supprimé des propriétés sur mes entités, je devais “Générer la firebase database à partir du modèle” avant de comstackr, sinon j’obtiens 3004 erreurs de mappage.

Je viens de retirer les tables incriminées du modèle et ensuite de les rappend et tout allait bien.

Pour ceux d’entre vous qui créent un modèle à partir d’une firebase database, j’ai rencontré ce problème après avoir apporté des modifications à ma firebase database. Cela s’est produit lorsque j’ai modifié un nom de champ dans la firebase database pour une raison ou une autre (je pense que cela se produit également si vous modifiez un type de données).

La solution, pour moi, consistait à cliquer avec le bouton droit sur l’espace de travail et à choisir «Mettre à jour le modèle à partir de la firebase database». Cela devrait append les propriétés de la firebase database à votre modèle, cependant, cela ne supprime PAS vos anciennes propriétés et celles-ci vous donneront l’erreur 3004.

Cliquez avec le bouton droit sur l’espace de travail et choisissez “Valider”. Cela devrait vous donner une liste d’erreurs montrant les propriétés incriminées. Vous pouvez ensuite cliquer avec le bouton droit sur chaque propriété incriminée et la supprimer manuellement de votre modèle.

Cela a résolu le problème pour moi. J’espère que ça aide quelqu’un d’autre.

Si vous souhaitez modifier votre firebase database sans régénérer l’intégralité du modèle ou recréer votre firebase database à partir du modèle, il est plus simple et plus sûr de modifier les propriétés du diagramme EDMX via Visual Studio, puis d’ajuster manuellement les mappages que Visual Studio ne donne pas. access à.

L’erreur vous donnera un numéro de ligne:

Problème de cartographie des fragments à partir de la ligne 569

Ouvrez simplement le fichier edmx dans un éditeur de texte, accédez à cette ligne et vous devez savoir ce qui doit être corrigé. Il y a une section qui ressemblera à ceci:

    ...   

Assurez-vous simplement qu’il existe un nœud pour chaque nom de propriété / colonne dont vous avez besoin et que toutes les propriétés sont également répertoriées dans la section en haut du document edmx.

Si toutes vos requêtes sont écrites dans des procédures stockées et que vous essayez simplement de remplir le modèle, vous pouvez passer à un type complexe qui fonctionne pour moi.

Comment créer un type complexe:

  1. Modifiez manuellement le nom de la classe Entity Generated avec laquelle vous rencontrez des problèmes pour un nom qui n’est pas déjà utilisé dans votre fichier edmx.
  2. Sélectionnez la fenêtre du navigateur de modèles et cliquez avec le bouton droit de la souris / ajoutez un nouveau type complexe.
  3. Copiez / collez les propriétés du modèle d’origine dans le type complexe.
  4. Mappez vos procédures stockées sur le type complexe.

    J’espère que ça aidera quelqu’un.

Une autre alternative pour le faire sans supprimer la table du diagramme et la rappend est d’utiliser l’option Table Mapping.

  1. Aller au navigateur de modèles
  2. Faites un clic droit sur le nom de la table.
  3. Choisissez la cartographie
  4. Visual Studio affichera une fenêtre avec les propriétés EF correspondant aux colonnes de tableau / manquantes.
  5. Sélectionner / faire correspondre la colonne appropriée à la propriété manquante

entrer la description de l'image ici

J’ai reçu le même problème après avoir renommé une propriété sur l’une de mes entités.

J’ai découvert que le mappage entre la propriété de mon entité et la colonne correspondante dans la table n’était pas défini.

Vous pouvez définir cela en utilisant l’éditeur en cliquant avec le bouton droit sur l’entité dans le modèle et en choisissant “Mappage de table”. Assurez-vous que les propriétés sont mappées sur une colonne de la firebase database.

Edit: Je devais aussi relancer mon fichier tt pour générer les nouvelles classes. (Peut-être que je l’ai dans un autre projet?)

Après avoir examiné le fichier xml (edmx), déplacé le modèle dans un autre projet et réalisé que tout va bien, j’ai décidé de fermer et d’ouvrir Visual Studio et de compliquer l’againt, puis l’erreur disparaît.