EF de la Cartographie et de l'information sur les métadonnées n'a pas pu être trouvé pour EntityType Erreur
J'ai rencontré une exception lorsque j'utilise Entity Framework 4.0 RC.
Mon modèle d'Entity Framework est encapsulé dans un assemblage privé qui est le nom de passation des Marchés.EFDataProvider et mes classes POCO sont à l'intérieur d'une autre assemblée de l'Approvisionnement.De base
La relation entre le niveau de Base(Logique)et EFDataProvider(Accès aux Données) est une usine nommé DataProvider
donc, lorsque j'essaie de créer un objectset
objectSet = ObjectContext.CreateObjectSet<TEntity>();
J'obtiens une erreur:
De la cartographie et de l'information sur les métadonnées n'a pas pu être trouvé pour EntityType de passation de Marchés.De base.Les entités.OrganizationChart'.
- Après avoir cogné la tête contre ce matin, je pense que la solution la plus simple pourrait être d'utiliser le POCO modèle T4 de les générer à la place: blogs.msdn.com/b/adonet/archive/2010/01/25/... Il a pris une juste quantité de creuser pour savoir à ce sujet, et n'était pas trivial pour moi de trouver sur Google une fois que je savais à ce sujet :-/
- J'ai téléchargé ce et de l'utiliser maintenant.
InformationsquelleAutor Reza Zareian | 2010-02-28
Vous devez vous connecter pour publier un commentaire.
Pour quelqu'un d'autre traitant de l'erreur, je pense qu'il est utile de mentionner certains scénarios que j'ai trouvé l'origine de cette (très peu utile) erreur:
Il pourrait y avoir d'autres causes.
HTH
C'est probablement parce que EF ne pouvez pas trouver les incorporés de cartographie de l'information. À l'intérieur de votre chaîne de connexion, vous aurez probablement quelque chose comme sa:
Que * est un joker, de raconter le contexte de l'objet de l'essayer et de trouver les incorporés de cartographie de l'information à partir, je pense, l'analyse de tous les assemblys chargés. Si l'assemblée n'est pas chargé, EF ne la trouvera pas.
Ce que vous devez faire est de fournir la chaîne de connexion avec plus d'informations sur l'endroit où vos informations de mappage est intégré. Modifier la * pour le montage spécifique au nom de votre code de mappage:
Si cela ne fonctionne pas, trouvez de l'Assemblée et de les charger directement dans votre ObjectContext à l'aide de:
Ne sont pas directement liées à la ci-dessus, mais si vous obtenez ce message d'erreur et vous avez mélangé un POCO et un modèle régulier: mauvaise idée!
Voir aussi le commentaire de JRoppert à EF4 POCO (ne pas l'utiliser T4): Cartographie et de l'information sur les métadonnées n'a pas pu être trouvé pour EntityType (merci JRoppert!)
Je recevais ce message, car j'ai eu plus de fichier edmx dans la même assemblée avec la bonne utilisation des espaces de noms personnalisés.
Voici ce qui est dit à propos de l'exception dans le Système.Les données.Objets.ObjectContext
//Exceptions:
J'ai aussi vu lorsque la chaîne de connexion n'est pas spécifié dans le fichier de configuration.
Un autre problème possible est, si vous utilisez le code-première et votre type d'entité est définie dans un ensemble distinct pour les cas où le contexte est de définir et vous n'avez pas ajouté tous les mappages pour les
OnModelCreating(DbModelBuild modelBuilder)
méthode, puis EF semble ignorer les annotations de données.Solution:
Ajouter
modelBuilder.Entity<YourEntityType>();
à laOnModelCreating(DbModelBuild modelBuilder)
méthode.Related post.
Il suffit de vérifier la propriété d'orthographe avec le modèle
Il pourrait y avoir une autre raison. J'ai aussi tiré mes cheveux pour une nuit.
Je me suis tourné qu'il y a un certain désordre dans les références dans la solution. Dans mon projet, la
edmx
appartient à un projet appeléDataAccess.Dll
. Mais je n'ai pas de référence à partir de mon exe. De mon exe j'ai une référence à un autre projet appeléBusiness.Dll
, et ce projet est une référence et ancien emplacement de laDataAccess.DLL
.Faire le test suivant pour voir si vous avez ce problème:
Vous avez besoin de vérifier vos références et de s'assurer qu'ils se réfèrent à l'emplacement de mise à jour de votre dll.
Dans mon cas, c'était essentiellement la même question, la cartographie n'étant pas exactement comme prévu. Ce qui s'est passé pour moi a été de passer un bien dans une "Table Par Hiérarchie de l'héritage" de l'une des sous-classes de la classe de base et j'ai oublié de mettre à jour le modèle.
J'ai personnalisé POCO et en copiant le fichier edmx à une vierge de nouveau projet et de le laisser générer automatiquement les entités, puis de les comparer à ce que j'avais m'ont aidé dans la recherche de la différence.
une erreur de débutant, Mais j'ai eu l'erreur lors de mon accès à la DB était avec un accès en Lecture Seule nom d'utilisateur et mot de passe. Espérons que mes erreurs d'aider les autres.
J'ai eu un problème similaire. J'avais déjà un fichier EDMX pour une base de données à l'aide de classes POCO et un objet de Contexte que j'ai écrit moi-même. Quand j'ai ajouté un deuxième EDMX pour une autre base de données, j'ai utilisé le POCO modèle T4 et puis ni EDMX travaillé et a jeté l'erreur que vous avez mentionné. Pour le résoudre j'ai scrappé mon custom POCO et au Contexte, et utilisées uniquement le Modèle T4 et tout fonctionne bien à nouveau.
J'ai eu un problème là où je l'avais ajouté certaines colonnes d'une table.
Dans les Mappages de Table, j'avais renommé les noms de colonne.
Bien que j'avais couru "Transformer Tous les Modèles et reconstruit à l'application, j'ai toujours eu la" Les métadonnées associées de type de type <> contient les éléments suivants propriétés inconnues ou les champs <>' erreur.
La classe pour ce tableau dans le Domaine.Poco.tt était correct, mais j'ai trouvé la classe correspondante.Les métadonnées.cs fichier dans le Domaine.Poco.Les métadonnées.tt a pas mis à jour, et avait les nouvelles colonnes avec les noms d'origine - pas les nouvelles que j'avais spécifié dans la Table de Mappage.
Solution? J'ai juste supprimé l'infraction de métadonnées de la classe, et re-couru à 'Transformer Tous les Modèles et il a été recréé correctement, avec la bonne colonne/les noms de fonction.
Mon problème est que j'avais édité le modèle T4 exclure la réplication champ nommé "msrepl_tran_version". Cela a provoqué la base de données correspondent pas, les classes générées qui est la cause de ce message d'erreur. Assurez-vous que votre base de données et classes de match.