2010-06-17 5 views
7

Après la conversion de mon projet de couche d'accès aux données de EntityFramework v1 à v4 a obtenu un tas d'erreurs pour chacune des classes d'entités:conversion Entity Framework de v1 à un problème v4

Erreur 10016: Erreur de résolution élément « EntityTypeShape ». Le message d'exception est: 'Référence non résolue' NS.EntityName1 '.'. DataAccessLayer \ Model.edmx

et

Erreur 10016: Erreur de résolution élément 'AssociationConnector'. Le message d'exception est: 'NS.EntityName1'. '. DataAccessLayer \ Model.edmx

Est-ce que quelqu'un sait de quoi il s'agit et comment le réparer?

+0

Hi Max. Je viens de mettre à jour une de nos solutions, et j'ai le même problème que vous. Avez-vous trouvé une solution à cela? –

+0

Non, j'ai tout recréé à partir de zéro. – Max

Répondre

4

J'ai eu le même problème. Je ne sais pas si c'est votre problème ou non, mais j'ai trouvé en regardant l'edmx dans la vue xml que j'avais des références en double dans le xml pour chacun des éléments avec cette erreur. Tout ce que je devais faire était de supprimer les références en double et tout a fonctionné.

Voici un exemple de ce que je veux dire:

<EntityTypeShape EntityType="PackageManagementEntityModel.Package" Width="1.5" PointX="0.75" PointY="0.75" Height="3.5644742838541665" IsExpanded="true" /> 
<EntityTypeShape EntityType="PackageManagementEntityModel.ShipLane" Width="1.5" PointX="2.75" PointY="0.75" Height="1.7566536458333331" IsExpanded="true" /> 
<EntityTypeShape EntityType="PackageManagement.EntityModel.Package" Width="1.5" PointX="0.75" PointY="0.75" Height="3.5844742838541652" /> 
<EntityTypeShape EntityType="PackageManagement.EntityModel.ShipLane" Width="1.5" PointX="2.625" PointY="0.75" Height="1.7566536458333335" /> 
+0

Merci, mais malheureusement ce n'est pas mon cas – Max

+0

Oui, cela a fonctionné pour moi aussi. –

+0

Fonctionne pour moi aussi. En fait, ils se référaient à certaines relations non existantes. Je suppose que EF aurait dû les supprimer. – ritcoder

5

Si le modèle est petit, il est probablement plus facile de se régénérer tout simplement. Si vous préférez le corriger, vous pouvez modifier manuellement le code XML dans l'éditeur XML, avant ou après la conversion. Le problème, dans mon cas, était que les attributs EntityType n'étaient pas corrects - en particulier l'espace de noms était incorrect. Je ne suis pas sûr de comment cela a fonctionné correctement dans VS2008 mais je n'ai pas eu le désir d'aller plus loin. Si cela ne vous dérange pas de perdre la mise en page de votre modèle, la meilleure façon de le corriger est de supprimer tout dans la balise <Diagram>, de sorte qu'on ressemble à ceci:

<!-- Diagram content (shape and connector positions) --> 
<edmx:Diagrams> 
    <Diagram Name="YourDiagramName"> 
    </Diagram> 
</edmx:Diagrams> 

Enregistrer et rouvrez le modèle le designer. Le problème devrait être résolu maintenant.

Si vous souhaitez conserver votre mise en page, plutôt que de simplement tout supprimer à l'intérieur de la balise <Diagram>, vous devez corriger tous les attributs EntityType incorrects. L'astuce consiste à s'assurer que le nom de type complet est spécifié. Dans mon cas, l'espace de noms contenait quelque chose de plus - je ne sais pas comment cela est arrivé ou comment cela a fonctionné dans VS2008, mais corriger cela est la première étape. Vous souhaiterez peut-être vérifier votre espace de noms et votre nom d'entité en consultant le code généré pour le modèle.

J'ai essayé cette solution à la fois sur VS2008 et VS2010 et j'ai obtenu des résultats différents. Dans VS2010, la simple correction des attributs EntityType a immédiatement résolu le problème. Dans VS2008, j'ai reçu une erreur lors de l'ouverture du modèle à nouveau, "Le paramètre est incorrect." Pour résoudre ce problème, j'ai été en mesure de modifier manuellement le XML à nouveau. Cette fois, j'ai supprimé tous les tags <AssociationConnector> (et tous les éléments enfants). Puis enregistré le fichier et tout a semblé fonctionner à nouveau.