Nombre de membres dans conceptuel type ne correspond pas avec le nombre de membres sur l'objet de type côté
Je suis en utilisant .net framework 3.5 SP1.
Après l'ajout d'une colonne à une table dans Sql Server (ainsi que la modification d'une colonne existante d'autoriser les valeurs null pour ne pas accepter les valeurs null), je ne peux plus lancer mon projet sans obtenir cette erreur:
Le nombre de membres dans le
conceptuel de type
'XBRLDimensionalModel.axis_t " n'
correspondance avec le nombre de membres de l'
l'objet de type côté
'En fin de vie.Xbrl.La persistance.Les données.axis_t'.
Assurez-vous que le nombre de membres
la même.
J'ai renoncé à essayer de trouver et de corriger le code généré. J'ai maintenant supprimé tous mes entité locale les fichiers et ré-généré par recommencer à partir de zéro et de l'ajout d'un nouvel élément (ADO.NET Modèle de Données d'Entité). J'obtiens toujours cette erreur.
La seule façon que je peux exécuter le projet, qui est d'annuler toutes mes modifications en attente et l'utilisation de la dernière version à partir du contrôle de code source, et bien sûr changer les deux modifiée colonnes de base de données pour les valeurs null.
De tout ce que j'ai lu jusqu'à présent, il semble que je doit tout simplement avoir été en mesure de "mettre à jour" mon modèle à partir de la base de données. Qui a abouti à cette exception (ci-dessus). Mais maintenant, je suis totalement confus que même avec une régénération complète de l'entité de modèle et de soutenir les cours, je suis encore en train d'erreur.
J'ai changé le bien sur mon modèle edmx: "Métadonnées Artefact de Traitement" à "Copier dans le Répertoire de Sortie". Le Concepteur.cs, csdl, msl, lsed tous les fichiers semblent être cohérentes avec la dernière DB changements.
L'exception est levée la première fois que mon entityModel instance est référencé. C'est donc avant toute activité de chargement ou d'enregistrement des données à partir de la modification de la table.
des idées où je vais mal?
Merci,
TG
Vous devez vous connecter pour publier un commentaire.
Ouvrez votre modèle au format XML. Supprimer toutes les références à ce type de la CSDL. Enregistrez et fermez, puis rouvrez dans l'interface graphique. Maintenant, vous devriez être en mesure de mettre à jour le modèle, comme d'habitude. Si cela ne fonctionne pas, faire la même chose, mais de supprimer à partir de MSL ainsi.
Cette erreur peut également se produire si le fichier EDMX a été modifié en dehors de Visual Studio. Clic droit sur le fichier EDMX et cliquez sur "Exécuter l'Outil Personnalisé"
Cela semble un peu bavard pour un commentaire, donc je suis en ajoutant ce que l'autre réponse:
En réponse Craig suggestion, j'ai ouvert le fichier edmx dans une visionneuse XML et supprimé toutes les références à Axis_t (y compris les associations en raison de Clés Étrangères). À partir de la totalité du fichier.
Je puis "mise à jour" le modèle de l'ouverture du fichier edmx que l'interface utilisateur graphique de l'interface, cliquez-droit | actualiser à partir de la base de données | Ajouter (onglet) qui maintenant ne répertorie que les Axis_t table. J'ai ajouté le tableau qui semblait bien fonctionner et de mes nouvelle colonne et la colonne a été mappé correctement.
J'ai ensuite couru le projet pour le même résultat. Même message d'erreur comme affiché ci-dessus.
J'ai maintenant repris ce qui était à la source de contrôle ainsi que la modification de la base de données des colonnes (nouveau et modifié un) comme nullable. Le projet fonctionne très bien. Je n'ai pas encore réussi à mettre en œuvre la nouvelle bd de la colonne en EF. Il se comporte comme s'il est stocké/version compilée du modèle, qui n'est pas mis à jour via la "mise à jour" du processus.
Lors de la modification d'une clé étrangère de nullable non nullable (ou vice-versa), il faut veiller à changer l'association de la multiplicité à partir de 0..1 à 1 (ou vice-versa). Le concepteur parfois ce manque dans une mise à jour de la base de données.
J'ai été confrontée au même problème, quand j'ai ajouté une colonne db et ajouté de la propriété respective de l'entité(edmx).
J'ai aussi été en utilisant le contrôle de source de ma solution. Comme je l'ai remarqué, lors de l'enregistrement des modifications à tout fichier, enregistrer l'action invites avec option de remplacement.
Donc, j'ai remplacé le concepteur.cs ainsi fichier de configuration et le problème est résolu.
ce qui concerne,
bhushan
Ce qui m'est arrivé quand je suis en train de travailler sur les deux versions de la même application (avec les différences de Modèle) qui compilent dans les mêmes dossiers.
Il semble que Visual Studio n'est pas "nettoyer" le "obj" dossier temp correctement et de quelques fragments de l'ancien modèle sont toujours là.
Si j'ai simplement supprimer tous les fichiers de la "obj" dossier et de re-compiler cette erreur disparaît.
Le Modèle dans chaque version est parfait, qui a été me rend fou.
Pas dire que c'est la réponse à la discussion de la question, mais il est certainement un autre raison de cette erreur.
Steve
J'ai eu ce même problème pendant des heures. Trouvé dans ma Concepteur.cs fichier de l'une des propriétés de l'entité, qui manquait de ses attributs. (Je ne sais pas comment c'est arrivé?)
Maintenant le message d'erreur de sens, c'était le manque DataMember. Une fois que l'attribut a été ajouté ÇA a FONCTIONNÉ!!!
Voici un scénario de cauchemar que j'ai vécu: j'ai un MVC2 site web et un service WCF qui sont construits séparément, mais qui partagent une configuration. Dans les deux projets, j'ai utilisé la même Entité Conteneur Nom; c'est pourquoi j'ai pris la même chaîne de connexion pour les deux projets. Finalement, les métadonnées suis sorti de la synchronisation entre les deux et la cause de cette erreur. La solution évidente était de ne pas utiliser la même Entité Nom du Conteneur dans les deux projets; changer de nom m'a permis de spécifier unique de chaînes de connexion, et donc de métadonnées, pour chaque composant permettant d'éviter le problème.
Maintenant que j'ai compris, c'est évident, mais j'ai eu une tendue heure ou deux!
Cela a fonctionné pour moi.