MVC4 échafaudage de base de données-premier modèle d'Entity Framework dans Visual Studio 2012
Je vais avoir des problèmes avec Visual Studio 2012, en essayant d'ajouter un MVC4 Contrôleur avec des échafaudages. Idéalement, je voudrais avoir un modèle d'Entity Framework (fichier edmx, etc) généré à partir d'une base de données à l'aide d'Ajouter un Nouvel Élément - ADO.NET Modèle de Données d'Entité (c'est à dire pas le Premier Code) dans un ensemble distinct de mon application web. Cependant, lorsque j'ai mis cela en place et l'utilisation Ajouter un Contrôleur, en précisant "MVC contrôleur de lire/écrire les actions et les points de vue, à l'aide de Entity Framework" et en choisissant un Modèle de classe et de la classe de contexte de Données à partir de mon DatabaseModel assemblée le message d'alerte suivant s'affiche.
'Ilm.Payforit4.DatabaseModel.Mno ne fait pas partie de la
'Ilm.Payforit4.DatabaseModel.Payforit4Entities' classe, et l'
'Ilm.Payforit4.DatabaseModel.Payforit4Entities' classe ne pouvait pas être
modifié pour ajouter un " DbSet la propriété de
c'. (Par exemple, le 'Ilm.Payforit4.DatabaseModel.Payforit4Entities'
la classe peut être dans un assembly compilé.)
De ne pas être en mesure de modifier la classe a de sens depuis qu'il est dans une autre assemblée, bien que dans la même solution, et auto-généré via T4, mais en regardant le code généré automatiquement pour Payforit4Entities le " DbSet la propriété est très clairement il y a déjà.
public DbSet<Mno> Mnoes { get; set; }
J'ai essayé un certain nombre d'autres choses.
- de mettre le modèle de données directement dans l'application web
- de modifier le modèle de classe à une variété d'autres tables dans la base de données dans le cas où il y a un problème avec la Mno classe
- réduisant le modèle de données pour une seule, simple tableau
- en utilisant Entity Framework Power Tools Beta 2 pour désosser un Code Premier modèle. Cela a généré une nouvelle série d'erreurs. Je peux voir pourquoi c'est une version bêta.
- la modification de la ADO.NET Modèle de Données Stratégie de Génération de Code à partir de Aucun par Défaut pour créer un modèle de données basé sur ObjectContext plutôt que DbContext
- Désactivation de pluralisation de sorte que le nom de la propriété est Mno au lieu de Mnoes
Aucun d'entre eux travaillaient. La seule chose qui a fonctionné a été la rédaction d'un Premier Code DbContext classe dérivée et POCO à la main. Par coïncidence, tous les exemples que j'ai trouvé qui montre MVC4 échafaudage utilise ce genre de modèle de données. Est-il quelque chose quelque part qui dit que le Premier Code est le seul genre de modèle de données qui fonctionne avec MVC4 échafaudage? Quelqu'un a réussi à l'échafaud une première base de données (.edmx) modèle de données dans Visual Studio 2012? La base de données est assez complexe que je préfère rester avec une base de données de la première stratégie.
Je peux voir qu'il y aurait à avoir certaines différences dans l'échafaudage de Code de la Première par rapport à la Première Base de données de modèles. Par exemple, l'ancien a POCO propriété en maintenant la touche indiquée par un KeyAttribute alors que celle-ci détient cette information dans le modèle edmx fichiers. Est-ce la raison pour la désosser fonction dans le Cadre de l'Entité Outils électriques? Sommes-nous censés nous éloigner de edmx fichiers à l'ingénierie inverse du Premier Code de modèles pour l'utilisation MVC4 échafaudage? Si oui, sommes-nous censés porter sur l'utilisation de la Dynamique de Données des projets jusqu'à ce que le Cadre de l'Entité Outils électriques sont finis?
OriginalL'auteur Chris Bowley | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
L'astuce est de commencer par compiler votre solution, puis tapez dans le contexte de la classe manuellement. Ne pas le choisir dans la liste Déroulante, tapez simplement le nom de la classe par vous-même et il fonctionne par magie 😉
Voir ici: ASP.NET MVC4– Comment faire pour utiliser une Base de données de la Première EF dans un contrôleur MVC
Même ici, ne peut pas croire à quel attardé c'est lol.
Quand j'ai essayer ce que je reçois "Le type de modèle n'est pas valide. Veuillez sélectionner un élément de la liste."
Travailler comme un charme merci 😀
Cela fonctionne, je vous remercie. Noter la raison pour laquelle il fonctionne, c'est qu'il crée une nouvelle classe DbContext à la racine de votre projet.
OriginalL'auteur Marcus
Je ne pense pas que nous pouvons échafaudage de edmx fichiers avec Entity Framework 5.
J'ai essayé un ensemble similaire de choses et je suis toujours frapper les erreurs.
Il ya un couple de suggestions peut-être juste de la suppression d'un mauvais edmx et un nouveau départ pourrait générer le bon .tt les fichiers pour permettre l'échafaudage pour travailler correctement, mais je n'ai pas encore vu cela.
Je vais essayer un peu plus à le faire fonctionner, comme je préfère DB premières approches. Je mettrai à jour cette réponse si je reçois plus loin.
Non, je n'en ai pas trouvé utile de solution à cela. Comme alexb dit ci-dessous, il n'est pas très robuste, donc j'espère que ça va aller mieux dans une mise à jour
comme vous, j'ai beaucoup de problèmes sur les échafaudages sur mon mvc4 projet avec EF5 db première. J'ai testé sur VS2013 extrait : le même projet, le même code est maintenant fonctionne bien. Donc, je suis temporairement de travailler sur une machine virtuelle pour utiliser en toute sécurité VS2013 et d'être en mesure de revenir à VS2012 si nécessaire.
OriginalL'auteur James Osborn
L'edmx générateur de code au sein de l'Entité Frameork 5/VS 2012 est buggé. Il crée un code qui est plein d'erreurs du compilateur. J'imagine qu'il n'était pas prêt pour la livraison quand vs2012 a été libéré, c'est pourquoi ils ont mis la génération de code par défaut drapeau à aucun.
La seule question pour Microsoft est: quand peut-on s'attendre à une mise à jour qui résout ce?
OriginalL'auteur alexb
C'est la vérité!
L'astuce est de commencer par compiler votre solution, puis tapez dans le contexte de la classe manuellement. Ne pas le choisir dans la liste Déroulante, tapez simplement le nom de la classe par vous-même et il fonctionne par magie 😉
merci à tous!! Marcus!
OriginalL'auteur Abraham Ortiz