11
votes

Échafaudage MVC4 de la base de données - Première entité Framework Modèle dans Visual Studio 2012

J'ai des problèmes avec Visual Studio 2012, essayant d'ajouter un contrôleur MVC4 avec un échafaudage. Idéalement, je voudrais avoir un modèle de cadre d'entité (fichier EDMX, etc.) généré à partir d'une base de données à l'aide de Ajouter un nouvel élément - Modèle de données d'entité ADO.NET (I.E. NON code d'abord) dans un assemblage séparé de mon application Web. Toutefois, lorsque j'ai défini cette opération et utilisez Ajout de contrôleur, spécifiez "Contrôleur MVC avec des actions de lecture / écriture et des vues et des vues, de la classe d'entité" et de choisir une classe de modèle et une classe de contexte de données à partir de My Databasemodel Assembly, le message d'alerte suivant apparaît.

'ifl.payforit4.databasemodel.mno' ne fait pas partie de la spécifiée «Ifl.payforit4.databaseLodel.payforittities», et le "Ifl.payforforit4.databaseModel.payforittities "Payforittities n'a pas pu être modifié pour ajouter une propriété 'DBSet' à ce. (Par exemple, les 'ifl.payforit4.databasemodel.payforittities' classe peut être dans un assemblage compilé.) p> blockQuote>

ne pas pouvoir modifier la classe a du sens, car il est dans une autre assemblée, bien que dans la même solution, et généré automatiquement via T4, mais en regardant le code généré automatiquement pour Payforit4entotities, la propriété "DBSET" y est déjà clair déjà. P>

    public DbSet<Mno> Mnoes { get; set; }


0 commentaires

4 Réponses :


0
votes

Je ne pense pas que nous puissions échafauder des fichiers EDMX avec cadre d'entité 5.

J'ai essayé un ensemble similaire de choses et je sais toujours des erreurs.

Il y a quelques suggestions qui permettent peut-être simplement de supprimer un mauvais EDMX et de recommencer à nouveau générer les fichiers .tt corrects pour permettre à l'échafaudage de fonctionner correctement, mais je n'ai pas encore vu cela.

Je vais essayer d'autres pour le faire fonctionner, car je préfère les premières approches de DB. Je mettrai à jour cette réponse si je reçois plus loin.


3 commentaires

Avez-vous déjà trouvé une solution? Je préfère aussi la première approche de la DB


Non, je n'ai trouvé aucune solution utile à cela. Comme Alexb dit ci-dessous, ce n'est pas très robuste, alors j'espère que ça va aller mieux dans une mise à jour


@ZOIDBERGI: Comme vous, j'ai beaucoup de problèmes d'échafaudage sur mon projet MVC4 avec EF5 DB en premier. J'ai testé sur VS2013 Aperçu: le même projet, le même code fonctionne maintenant bien. Je travaille donc temporairement sur une machine virtuelle pour utiliser VS2013 en toute sécurité et pouvoir revenir à VS2012 si nécessaire.



0
votes

Le générateur de code EDMX en entité Frawork 5 / VS 2012 est buggy. Il crée un code rempli d'erreurs de compilateur. Je suppose que ce n'était pas prêt pour l'expédition lorsque VS2012 a été publié, c'est pourquoi ils définissent le drapeau de génération de code par défaut.

La seule question pour Microsoft est la suivante: quand pouvons-nous nous attendre à une mise à jour qui corrige cela?


0 commentaires

13
votes

L'astuce consiste à compiler votre solution, puis tapez la classe de contexte manuellement . Ne le choisissez pas dans la liste déroulante, tapez simplement le nom de la classe par vous-même et il fonctionnera comme par magie; -)

Voir ici: ASP.NET MVC4- Comment utiliser une base de données d'abord EF dans un contrôleur MVC


4 commentaires

Cela a fonctionné très bien et accessoires jusqu'à Stackoverflow pour me donner ce lien comme j'ai saisi ma question.


Lorsque j'essaie ceci, je reçois "le type de modèle n'est pas valide. Veuillez sélectionner un élément dans la liste."


Cela fonctionne, merci. Notez la raison pour laquelle il fonctionne est qu'il crée une nouvelle classe DBContext à la racine de votre projet.


Je me suis fait autour du problème que j'avais, mais oui, il crée un dBContext à la racine. Pas une grosse affaire, vous pouvez simplement le supprimer et l'installer pour utiliser le bon.



-1
votes

C'est la vérité! L'astuce est d'abord compiler votre solution, puis tapez manuellement la classe de contexte. Ne le choisissez pas dans la liste déroulante, tapez simplement le nom de la classe par vous-même et il fonctionnera comme par magie; -)

Merci !! Marcus!


1 commentaires

Veuillez ne pas copier et coller une réponse pour montrer votre appréciation.