L'erreur vous dit tout ce que vous devez savoir: "Définir la clé de cette EntityType".
En EF toutes les entités doivent avoir les clés primaires d'un certain type.
J'ai mis un penalty dans le Serveur SQL server, mais il semble qu'il n'a pas d'actualiser la VS de voir cela alors? Il ne peut pas, essayez en cliquant-droit sur le modèle et sélectionnez "mettre à Jour le Modèle de Base de données', sinon juste à droite, cliquez sur le PK du champ et sélectionnez l'option "Entité Clé". J'ai une clé pour le type d'entité -- SQL et entity framework concepteurs de même afficher une petite icône en forme de clé. J'ai le même problème, êtes-vous trouvé de solution; je suis en utilisant la base de données tout d'abord, et mon programme fonctionne bien jusqu'à il y a quelques heures, je viens de solution propre et de créer la solution, et cette erreur émis
Juste mettre la Touche [] sur le dessus de votre propriété (qui présente la clé primaire). Quelque chose comme ceci,
[Key]publicintBlogTypeId{get;set;}
Mais si le fichier est généré automatiquement, il suffit d'effacer vos modifications lorsque vous exécutez à nouveau le projet. Nope, n'a pas de travail pour moi - mon nom de domaine se termine en ID, et il a la Touche [] attribut. Est aussi une propriété, c'est à dire { get; set; }
MVC3 va automatiquement reconnaître une entité de la Clé si elle suit la convention " Id " ou "EntityNameId'. En outre, l'entité doit exposer cela comme une PROPRIÉTÉ ET il doit être PUBLIC. J'ai fait l'erreur d'utiliser protégé pour mon bien et eu cette erreur.
En est un bon exemple:
publicintId{get;set;}
OU
publicintEntityNameId{get;set;}
Utiliser la Touche [] attribut si vous ne pouvez pas suivre cette convention, OU si vous voulez être très explicite dans votre code.
Qu'advient-il si il y a une db qui existe déjà et vous obtenez toujours la même erreur? Je suis en utilisant MVC 3 et SQL Server 2008 R2. Aussi le nom de la colonne est "FormID" aussi à l'aide de la [Touche] Ah! Doit être une propriété... qui était mon erreur! Merci. Merci, de changer le nom de mon PK dans mon projet de Base de données à partir de "Clé" à la "Id" juste travaillé. Aucune idée de pourquoi il était nécessaire, le SQL designer a montré une clé à côté du champ, mettre la "CLÉ PRIMAIRE" texte dans le SQL, entity framework designer même dessiné une petite clé à côté du champ; donc tout le savais que c'était un putain de clé, mais les fichiers créés automatiquement n'ont pas "[CLÉ]", et, évidemment, de l'édition d'un fichier généré automatiquement est tout simplement stupide-mais c': cela a fonctionné. Merci homme.
Dans l'esprit de partage de solutions pour le même problème...
J'ai eu le même problème, mais il n'était pas fixé par la Touche [] de la solution pour le codage d'un MVC 4 app avec VS2012.
J'ai oublié d'inclure les accesseurs et des mutateurs sur mon modèle les membres. Juste avoir le public n'est pas suffisant et Visual Studio va vous donner le même message d'erreur.
Interessant peu tid bits de partager. Sur mon modèle, j'ai été le portage de mon code à partir de un .NET framework à l'autre et a raté une propriété qui convertit une chaîne de caractères xml champ à un XDocument. La propriété doit avoir eu un NotMappedAttribute appliquée, mais comme je l'ai dit, j'ai oublié et puis j'ai commencé à faire ce pas-très-erreur spécifique:
Une ou plusieurs erreurs de validation ont été détectés au cours de la génération de modèle:
\tSystem.Les données.De l'entité.Edm.EdmEntityType: : EntityType 'XDocument' a pas de clé définis. Définir la clé de cette EntityType.
\tSystem.Les données.De l'entité.Edm.EdmEntitySet: EntityType: EntitySet 'XDocuments" est basé sur le type "XDocument" qui n'a pas de touches définies.
Je chassés ma queue pendant environ une heure en raison de l'erreur qui s'est produit sur l'un des autres modèles exposés par ma classe DbContext. De la frustration, j'ai chassé par tous les XDocument bien dans mon assemblée et bamb que! Trouvé un qui n'a pas la NotMapped attribut.
Voulais juste mettre ça là-bas pour empêcher quelqu'un d'autre de tirer les cheveux.
Exemple:
//This NotMappedAttribute was missing and is required to prevent EF//from treating the XDocument class as an entity that requires//a KeyAttribute.[NotMapped]//<== missing until nowpublicXDocumentDataXml{get{returnXDocument.Parse(this.m_Xml);}set{this.m_Data = value.ToString();}}
L'erreur vous dit tout ce que vous devez savoir: "Définir la clé de cette EntityType".
En EF toutes les entités doivent avoir les clés primaires d'un certain type.
Il ne peut pas, essayez en cliquant-droit sur le modèle et sélectionnez "mettre à Jour le Modèle de Base de données', sinon juste à droite, cliquez sur le PK du champ et sélectionnez l'option "Entité Clé".
J'ai une clé pour le type d'entité -- SQL et entity framework concepteurs de même afficher une petite icône en forme de clé.
J'ai le même problème, êtes-vous trouvé de solution; je suis en utilisant la base de données tout d'abord, et mon programme fonctionne bien jusqu'à il y a quelques heures, je viens de solution propre et de créer la solution, et cette erreur émis
OriginalL'auteur CodingGorilla
Juste mettre la Touche [] sur le dessus de votre propriété (qui présente la clé primaire). Quelque chose comme ceci,
Nope, n'a pas de travail pour moi - mon nom de domaine se termine en ID, et il a la Touche [] attribut. Est aussi une propriété, c'est à dire { get; set; }
OriginalL'auteur Ishraq Ahmad
MVC3 va automatiquement reconnaître une entité de la Clé si elle suit la convention " Id " ou "EntityNameId'. En outre, l'entité doit exposer cela comme une PROPRIÉTÉ ET il doit être PUBLIC. J'ai fait l'erreur d'utiliser protégé pour mon bien et eu cette erreur.
En est un bon exemple:
OU
Utiliser la Touche [] attribut si vous ne pouvez pas suivre cette convention, OU si vous voulez être très explicite dans votre code.
Aussi le nom de la colonne est "FormID" aussi à l'aide de la [Touche]
Ah! Doit être une propriété... qui était mon erreur! Merci.
Merci, de changer le nom de mon PK dans mon projet de Base de données à partir de "Clé" à la "Id" juste travaillé. Aucune idée de pourquoi il était nécessaire, le SQL designer a montré une clé à côté du champ, mettre la "CLÉ PRIMAIRE" texte dans le SQL, entity framework designer même dessiné une petite clé à côté du champ; donc tout le savais que c'était un putain de clé, mais les fichiers créés automatiquement n'ont pas "[CLÉ]", et, évidemment, de l'édition d'un fichier généré automatiquement est tout simplement stupide-mais c': cela a fonctionné. Merci homme.
OriginalL'auteur kingdango
Dans l'esprit de partage de solutions pour le même problème...
J'ai eu le même problème, mais il n'était pas fixé par la Touche [] de la solution pour le codage d'un MVC 4 app avec VS2012.
J'ai oublié d'inclure les accesseurs et des mutateurs sur mon modèle les membres. Juste avoir le public n'est pas suffisant et Visual Studio va vous donner le même message d'erreur.
J'ai identifié 5 scénarios dans ce message - couverts en un petit billet de blog à ce sujet.
OriginalL'auteur GilesDMiddleton
Interessant peu tid bits de partager. Sur mon modèle, j'ai été le portage de mon code à partir de un .NET framework à l'autre et a raté une propriété qui convertit une chaîne de caractères xml champ à un XDocument. La propriété doit avoir eu un NotMappedAttribute appliquée, mais comme je l'ai dit, j'ai oublié et puis j'ai commencé à faire ce pas-très-erreur spécifique:
Une ou plusieurs erreurs de validation ont été détectés au cours de la génération de modèle:
\tSystem.Les données.De l'entité.Edm.EdmEntityType: : EntityType 'XDocument' a pas de clé définis. Définir la clé de cette EntityType.
\tSystem.Les données.De l'entité.Edm.EdmEntitySet: EntityType: EntitySet 'XDocuments" est basé sur le type "XDocument" qui n'a pas de touches définies.
Je chassés ma queue pendant environ une heure en raison de l'erreur qui s'est produit sur l'un des autres modèles exposés par ma classe DbContext. De la frustration, j'ai chassé par tous les XDocument bien dans mon assemblée et bamb que! Trouvé un qui n'a pas la NotMapped attribut.
Voulais juste mettre ça là-bas pour empêcher quelqu'un d'autre de tirer les cheveux.
Exemple:
OriginalL'auteur RashadRivera
Même scénario que @Gilesey. Dans mon cas, j'ai eu pour marquer l'attribut de clé publique,
public int Id { get; set; }
OriginalL'auteur kannankeril