"Il y avait une erreur dans le générateur de code sélectionné dans VS 2013 scaffolding

je crée une nouvelle vue sur un modèle.

Le message d'erreur que je reçois est

Erreur

Il y avait une erreur dans le générateur de code sélectionné:

'Accès au chemin

"C:UsersXXXXXXXAppDataLocalTempSOMEGUIDEntityFramework.dll' est refusé".

Je cours VS 2013 en tant qu'administrateur.

j'ai regardé Est MvcScaffolding compatible avec VS 2013 RC par ligne de commande? mais cela ne semble pas résoudre le problème.

VS2013 C # 5 MVC5 Un tout nouveau projet a débuté en VS 2013.

33
demandé sur Community 2013-11-12 08:25:30

21 réponses

VS2013 erreur: il y avait une erreur en cours d'exécution du générateur de code sélectionné: "Une configuration pour le type" SolutionName.Modèle.SalesOrder' a déjà été ajouté ...

j'ai eu ce problème tout en travaillant à travers un cours Pluralsight"données Parent-enfant avec EF, MVC, Knockout, Ajax, et Validation". J'ai essayé d'ajouter un nouvel élément échafaudé en utilisant le modèle MVC 5 Contrôleur avec vues, en utilisant Entity Framework .

la classe de contexte de données que j'utilisais incluait un contournement de la méthode OnModelCreating. La dérogation était nécessaire pour ajouter des configurations de colonne de base de données explicites où les valeurs par défaut du FE n'étaient pas adéquates. Cette dérogation était simple, fonctionnait et ne présentait aucun problème, mais (comme il a été noté ci-dessus) elle a nui à la génération de code du contrôleur.

Solution qui a fonctionné pour moi:

1 - j'ai enlevé (commenté) mon outrepasser de création de Modemodèle et le modèle d'échafaudage complété sans aucun message d'erreur - mon code de contrôleur a été généré comme prévu.

2-cependant, essayer de construire le projet a suffoqué parce que "le modèle avait changé". Puisque mon code de contrôleur était maintenant généré correctement, j'ai restauré (non commenté) le outrepassement OnModelCreating et le projet a été construit et exécuté avec succès.

24
répondu Bill B 2015-07-08 14:08:31

problème avec un web corrompu.répertoire de configuration et de paquets.

j'ai créé le nouveau projet, et j'ai copié mes fichiers de code sur le nouveau projet de travail, je suis plus tard retourné et j'ai lancé des diffs sur les fichiers de configuration et une diff de dossiers sur le projet lui-même.

le problème était que les mises à jour avaient fortement abîmé mon fichier de configuration avec beaucoup d'artéfacts de mise à jour que j'ai fini par éliminer.

le deuxième problème était que le l'ancien projet s'accrochait aussi à des DLLs plus anciens qui étaient censés être effacés avec l'application du paquet Nuget. Donc j'ai effacé les dossiers obj et bin, puis le dossier package. Après cela, j'ai pu faire réparer l'ancien projet et construire proprement.

Je n'ai pas cherché à savoir pourquoi le fichier de configuration ou le dossier paquet était si borné, mais je suppose que c'est l'une des deux choses.

  1. peut-être que le paquet nuget a un défaut
  2. le contrôle source de TFS a empêché nuget de mettre à jour correctement les différentes dépendances.

depuis lors, avant d'appliquer des mises à jour, je vérifie tout. Cependant, comme je n'ai pas mis à jour le FE depuis un certain temps, je n'ai aucune preuve que cela ait résolu mon problème de Fe ou d'échafaudage.

16
répondu Brian 2015-08-12 22:51:05

j'ai pu résoudre ce problème et avoir une meilleure compréhension de ce qui se passait. La meilleure partie est que je suis capable de recréer le problème et de le corriger pour être sûr de mon explication ici. la résolution était d'installer exactement la même version du cadre D'Entity pour le projet de couche D'accès aux données et le projet Web.

ma couche d'accès aux données avait Entity Framework v6.0.2 installé en utilisant NuGet, le projet web n'avait pas D'entité Framework est installé. Lors de la création d'un contrôleur D'API Web avec le modèle D'Entity Framework, Entity Framework est installé automatiquement, mais c'est l'ancienne version 6.0.0. J'ai été surpris de voir deux versions de Entity Framework installées, plus récentes sur mon projet de couche de données et plus anciennes sur mon projet Web. Une fois, j'ai enlevé l'ancienne version et installé la nouvelle version sur le projet Web le problème a disparu.

12
répondu isingh 2014-03-07 20:09:28

j'ai vérifié tous mes projets et chacun avait la même version de cadre D'entité. Dans mon cas, le problème était que un de mes projets ciblait .Net 4.0 tandis que les autres étaient .Net 4.5.

Solution:

  1. pour chaque projet en solution Projet->Propriétés->Application: définissez le cadre cible à .net 4.5 (ou tout ce dont vous avez besoin).
  2. Outils - > Gérer le paquet NuGet pour la Solution. Trouver Installé "Entity Framework". Et cliquez sur Gérer. Décochez tous les projets (notez les projets qui nécessitent un Fe). Maintenant, Re-Gérer EF et de vérifier que les projets dont vous avez besoin.
  3. solution propre et de reconstruction.
10
répondu RitchieD 2016-01-22 16:07:20

j'ai essayé chaque réponse sur chaque site que j'ai trouvé, et rien n'a fonctionné... jusqu'à présent. Affichage en retard au cas où quelqu'un comme moi vient et a la même expérience frustrante que j'ai.

mon problème était similaire à beaucoup ici, message d'erreur générique en essayant d'utiliser un échafaudage pour essayer d'ajouter un nouveau contrôleur (ef6, webapi). Au départ, j'ai pu utiliser un échafaudage pour une quinzaine de contrôleurs, après quoi il s'est arrêté de fonctionner un jour.

Solution Finale:

  1. Ouvrez votre dossier de travail sur votre disque dur pour votre solution.
  2. supprimer tout ce qui se trouve dans le dossier BIN
  3. supprimer tout ce qui se trouve dans le dossier OBJ
  4. Propre Solution, régénérer la Solution, Ajouter un Contrôleur via l'échafaudage

voilà! (pour moi)

9
répondu erikrunia 2015-05-13 14:46:31

cela est généralement causé par un fichier Web.config invalide. J'ai eu le même problème et il s'est avéré que j'ai changé par inadvertance le bloc de commentaires HTML <!-- --> en un bloc de commentaires côté serveur @* *@ (par une action remplacer tout).

et dans le cas où vous développez une application WinForms, essayez de regarder à App.config .

4
répondu Moslem Ben Dhaou 2014-05-25 11:17:49

j'ai exactement le même problème. Cela s'est d'abord produit en suivant le cours Pluralsight "Parent-Child Data with EF, MVC, Knockout, Ajax, and Validation".

j'utilise MVC 5, EF 6.1.1 et framework 4.5.2.

même après avoir mis à jour ma VS2013 pour mettre à jour 4, cette erreur persiste.

a pu contourner ce problème gênant en changeant le DbSet en IDbSet dans la classe DbContext. La réponse a été à l'origine de ici .

//From
public DbSet SalesOrders { get; set; }

//To
public IDbSet SalesOrders { get; set; }
4
répondu scyu 2017-05-23 12:18:04

ce qui a fonctionné pour moi pour résoudre ce: Fermer Solution, et ouvrir le projet en cliquant sur le fichier projet et non le fichier solution, ajouter votre contrôleur, et bobs votre oncle

2
répondu Gerrie Pretorius 2014-03-06 09:52:30

aucune de ces réponses ne m'a aidé.

j'ai trouvé que la cause de mon problème était primordial OnModelCreating dans ma classe de contexte que l'échafaudage élément dépendait. En commentant cette méthode, l'échafaudage fonctionne.

J'aimerais que Microsoft publie moins de code buggy.

2
répondu Jim Taliadoros 2014-08-12 00:56:12

pour nous, cela a quelque chose à voir avec les configurations de construction, où nous avons une configuration de construction Debug|x64 que nous avions récemment changé d'utilisation, ce qui semble être rétrospectivement lorsque l'échafaudage a cessé de fonctionner.

(je soupçonne qu'il y a au moins 10 choses différentes qui peuvent causer cela, comme en témoignent les différentes réponses sur afin que certaines personnes trouvent à travailler pour eux--mais qui ne travaillent pas pour d'autres, donc je ne suis pas en train de suggérer que ma solution fonctionnera pour chacun.)

Ce qui a fonctionné pour nous (à l'aide de VS 2013 Express pour le Web sur une version 64 bits de Windows 7):

It (échafaudage) était et non fonctionnant en configuration de construction Debug|x64. Mais faire ce qui suit (et il semble que chaque étape est nécessaire--ne pouvait pas comprendre comment le faire d'une manière plus rationnelle) semble fonctionner pour nous.

  1. tout d'abord, passez à Debug|x86--utiliser la Configuration Solution (clic droit) Gestionnaire pour tous les projets de votre solution. (Déboguer / tout CPU peut aussi fonctionner).
  2. Nettoyez votre solution.
  3. ferme Visual Studio. (impossible de le faire fonctionner si je ignorer cette).
  4. Open Visual Studio.
  5. ouvrez votre solution.
  6. Construisez votre solution.
  7. essayez maintenant d'ajouter des éléments d'échafaudage; pour nous, cela a fonctionné à ce point, nous n'avons plus eu le message d'erreur disant quelque chose à propos de "Il y avait une erreur dans le générateur de code sélectionné".

si vous avez besoin de revenir à une configuration de construction d'échafaudage-ne fonctionne pas, vous pouvez le faire, après que vous avez échafaudé tout ce dont vous avez besoin pour le moment. Nous sommes revenus à notre Debug / x64 après avoir échafaudé ce dont nous avions besoin.

2
répondu DWright 2015-03-08 18:00:33

j'ai vu cette erreur avec un nouveau projet MVC5 en référençant un modèle d'un autre projet. Je vérifie le chemin, Entitefram Framework.dll n'existe pas. Il était en lecture seule. Le moniteur de processus a montré qu'il y avait une erreur en essayant de supprimer le fichier. Réglage de la EntityFramework.dll dans mon dossier packages (copie stockée dans le contrôle source) à writable a contourné cette erreur, mais en a soulevé une autre disant qu'il ne pouvait pas charger L'ensemble Entitefram Framework parce qu'il ne correspondait pas à la un référencés. Ma classe de modèle a été définie dans un autre projet qui utilisait une version plus ancienne du framework entity. Le projet MVC5 faisait référence à L'EF 6 alors que le modèle était tiré de L'EF 4.4. Le passage à L'EF 6 dans le projet du modèle m'a permis de le corriger.

1
répondu Lindsey 2013-11-21 09:15:40

j'ai eu ce problème lorsque vous essayez d'ajouter une Api Contrôleur à mon MVC ASP.NET application web pour une toute autre raison que les autres réponses. J'avais accidentellement inclus un attribut StringLength avec un attribut IndexAttribute déclaration pour une propriété entière due à une opération de copie et de coller:

[Index]
[IndexAttribute("NumTrainingPasses", 0), StringLength(50)]
public int NumTrainingPasses { get; set; }

une fois que je me suis débarrassé de la IndexAttribute déclaration j'ai pu ajouter un Api Controller pour le modèle qui contenait la propriété incriminée (NumTrainingPasses).

pour aider les moteurs de recherche, voici le message d'erreur complet que j'ai reçu avant de corriger le problème:

il y avait une erreur dans le générateur de code sélectionné:

impossible d'extraire des métadonnées pour le propriétaire.Modèle.MainRecord". La propriété

"Numtraingpasses" n'est pas une chaîne ou le tableau d'Octets. La longueur ne peut être configuré pour les propriétés String ou Byte array.

1
répondu Robert Oschler 2015-07-15 20:10:09

ceci est habituellement lié à un format de votre Web.config

reconstruire la solution et la recherche sous erreurs, tab Messages. Si vous avez des problèmes de format avec un web.config vous le verrez là-bas. De la réparer, et essayez à nouveau.

exemple: j'ai eu connectionstring au lieu de connectionString

1
répondu Marko 2016-12-12 20:09:53

au cas où cela aiderait quelqu'un, j'ai renommé le namespace dans lequel résidait le modèle, puis j'ai reconstruit le projet, puis je l'ai renommé de nouveau, et reconstruit, et ensuite ça a fonctionné.

0
répondu Adam Marshall 2014-02-03 14:45:42

reconstruire la solution fonctionne pour moi. avant de reconstruire, je trouve le numéro de référence de mon 'ApplicationDbContext' est zéro, c'est impossible, donc reconstruire solution, tout va bien maintenant.

0
répondu simon9k 2014-09-10 10:08:17

je tombe souvent sur cette erreur en travaillant avec MVC5 et EF lorsque je crée les modèles et le contexte dans un projet séparé (ma couche d'accès aux données) et que j'oublie d'ajouter la chaîne de connexion de contexte au Web du projet MVC.Config.

0
répondu John S 2014-12-06 06:53:01

j'ai également ce problème avec MSVS2013 mise à jour 4 et EF 6.0 Le message que j'ai reçu était:

    there was an error running the selected code generator.
A configuration for type XXXX has already been added ...[]

j'ai un modèle avec environ 10 classes. J'ai échafaudé des éléments au début du projet sans problème.

quelques jours Après l'ajout de fonctionnalités, j'ai essayé d'échafaudage d'une autre classe du modèle, mais une erreur m'empêchait de le faire.

j'ai essayé de mettre à jour MSVS de la mise à jour 2 à la mise à jour 4, commenter ma méthode OnModelCreating et d'autres idées proposées sans chance.

comme un moyen temporaire de continuer avec le projet, j'ai créé un autre asp.net j'y ai collé mes classes de modèles (j'utilise l'api fluent, donc il y a peu d'annotation dessus) et j'ai réussi à créer mon contrôleur et mes vues.

après cela, j'ai collé en arrière les classes créées au projet original et corrigé quelques erreurs (principalement les noms de dbset).

cela semble fonctionner, bien que je suppose que je vais encore trouver des erreurs liées aux relations entre les classes (en raison du manque de configuration fluide lors de la création).

j'espère que cela aidera les autres utilisateurs.

0
répondu user1839387 2015-02-25 12:05:29

cela m'est arrivé quand j'ai essayé de créer un nouvel échafaudage à l'extérieur du dossier de haut niveau pour une zone .

  • Monaire

    | - Fichier.cs (essayé de créer un nouveau échafaudage ici. Échec.)

j'ai simplement re-sélectionné ma région et le problème a disparu:

  • AyArea (Add => nouvel élément d'échafaudage)

Notez qu'après la génération de l'échafaudage, vous êtes amenés à un endroit où vous ne pourrez pas créer un nouvel échafaudage sans avoir d'abord re-sélectionné la zone (dans VS 2013 au moins).

0
répondu P.Brian.Mackey 2015-04-20 15:51:55
  • vs2013 mise à jour 4
  • ef 5.0.0
  • ibm db2connecteur 10.5 fp 5

changer le web.fichier de configuration en tant que tel: supprimé le / Les fournisseur (s) de l'étiquette ef:

<entityFramework>
</entityFramework>

a ajouté des balises de chaîne de connexion dans les sections de configuration:

</configSections>
<connectionStrings>
<add name=".." connectionString="..." providerName="System.Data.EntityClient" />
</connectionStrings>
0
répondu gummylick 2015-06-28 04:02:39

j'ai eu le même problème lorsque dans mon application MVC propriété de référence EF (dans la fenêtre Propriétés)" version spécifique " a été marqué comme faux et dans mon autre projet (contenant DBContext et modèles) qui a été réfréné de MVC application que la propriété de référence EF a été marqué comme vrai. Quand j'ai marqué comme Faux tout allait bien.

0
répondu Iwona Kubowicz 2015-11-15 11:02:56

je sais que je suis en retard, mais c'était tellement frustrant, donc j'espère que cela peut aider un peu ...

mon problème était semblable à bien des expériences ici, un message d'erreur générique lorsqu'on essaie d'ajouter une nouvelle vue ou d'utiliser un échafaudage pour ajouter un nouveau contrôleur.

j'ai découvert que mvc 5 et ef 6 modelbuilder ne sont pas de bons amis:

Ma Solution:

1.Commentez modelBuilder dans votre classe de contexte.

2.Solution Propre, Solution De Reconstruction.

3.Ajouter vue et Contrôleur par échafaudage

4. Uncomment modelbuilder.

peut - être un peu non conventionnel-mais ça a marché! (pour moi)

0
répondu freddy 2016-05-15 10:22:46