“Si è verificato un errore durante l’esecuzione del generatore di codice selezionato” in VS 2013 scaffolding

Sto creando una nuova vista da un modello.
Il messaggio di errore che sto ottenendo è

Errore
Si è verificato un errore durante l’esecuzione del generatore di codice selezionato:
‘Accesso al percorso
‘C: \ Utenti \ XXXXXXX \ AppData \ Local \ Temp \ SOMEGUID \ EntityFramework.dll’ è negato ‘.

Sto facendo funzionare VS 2013 come amministratore.

Ho visto che MvcScaffolding è compatibile con VS 2013 RC da riga di comando? ma questo non sembra risolvere il problema.

VS2013 C # 5 MVC5 Il nuovo progetto è iniziato nel VS 2013.

Errore VS2013: si è verificato un errore durante l’esecuzione del generatore di codice selezionato: “È già stata aggiunta una configurazione per tipo” SolutionName.Model.SalesOrder “…”

Ho avuto questo problema mentre lavoravo attraverso un corso di Pluralsight “Dati padre-figlio con EF, MVC, Knockout, Ajax e Validation”. Stavo cercando di aggiungere un nuovo elemento Scaffolded utilizzando il modello MVC 5 Controller con viste, utilizzando Entity Framework .

La class Data Context che stavo usando includendo un override del metodo OnModelCreating. L’override è stato richiesto per aggiungere alcune configurazioni esplicite di colonne di database in cui le impostazioni predefinite EF non erano adeguate. L’override era semplice, funzionante e privo di bug, ma (come notato sopra) interferiva con la generazione del codice di scaffold del Controller.

Soluzione che ha funzionato per me:

1 – Ho rimosso (commentato) il mio override OnModelCreating e il template dello scaffold completato senza messaggi di errore – il mio codice controller è stato generato come previsto.

2 – Tuttavia, cercando di build il progetto soffocato perché “Il modello era cambiato”. Poiché il codice del mio controller era stato generato correttamente, ho ripristinato (non commentato) l’override di OnModelCreating e il progetto è stato creato ed eseguito correttamente.

Il problema era con una web.config corrotta e una directory del pacchetto.

Ho creato il nuovo progetto e ho copiato i miei file di codice nel nuovo progetto di lavoro, in seguito sono tornato indietro e ho eseguito diffs sui file di configurazione e una cartella diff sul progetto stesso.

Il problema era che gli aggiornamenti avevano cancellato molto il mio file di configurazione con molti artefatti di aggiornamento che ho finito per svuotare.

Il secondo problema era che il vecchio progetto continuava a rimanere sospeso su DLL più vecchie che dovevano essere cancellate con l’applicazione del pacchetto Nuget. Quindi ho cancellato le cartelle obj e bin, quindi la cartella del pacchetto. Dopo che è stato fatto, sono stato in grado di riparare e build il vecchio progetto.

Non ho esaminato il motivo per cui il file di configurazione o la cartella del pacchetto è stato così borked, ma suppongo che sia una delle due cose.

  1. Forse il pacchetto di nuget ha un difetto
  2. Il controllo del codice sorgente TFS ha impedito a nuget di aggiornare correttamente le varie dipendenze.

Da allora, prima di applicare gli aggiornamenti, controllo tutto. Tuttavia, dal momento che non ho aggiornato EF da un po ‘di tempo, non ho prove che questo abbia risolto il mio problema con EF o scaffolding.

Sono stato in grado di risolvere questo problema e capire meglio cosa stava succedendo. La parte migliore è che sono in grado di ricreare il problema e correggerlo per essere sicuro della mia spiegazione qui. La soluzione era installare esattamente la stessa versione di Entity Framework sia per il progetto Data Access Layer che per il Web Project.

Il mio livello di accesso ai dati aveva installato Entity Framework v6.0.2 usando NuGet, il progetto web non aveva Entity Framework installato. Quando si tenta di creare un controller API Web con il modello Entity Framework Entity Framework viene installato automaticamente ma è uno dei precedenti della versione 6.0.0. Sono stato sorpreso di vedere due versioni di Entity Framework installate, più recenti sul mio progetto Data Layer e precedenti sul mio Web Project. Una volta, ho rimosso la versione precedente e installato la versione più recente su Web Project, il problema è andato via.

Ho controllato tutti i miei progetti e ciascuno aveva la stessa versione di Entity Framework. Nel mio caso, il problema era che uno dei miei progetti aveva come target .Net 4.0 mentre il resto era. 4.5.

Soluzione:

  1. Per ogni progetto in soluzione Progetto-> Proprietà-> Applicazione: Imposta Target Framework su .Net 4.5 (o qualsiasi altra cosa tu abbia bisogno).
  2. Strumenti-> Gestisci pacchetto NuGet per soluzione. Trova installato “Entity Framework”. E fai clic su Gestisci. Deseleziona tutti i progetti (annota i progetti che richiedono EF). Ora, ri-gestisci EF e controlla i progetti di cui hai bisogno.
  3. Pulisci e ricostruisci la soluzione.

Ho provato ogni risposta su ogni sito web che ho trovato, e niente ha funzionato … fino a questo. Pubblicare tardi nel caso che qualcuno come me arrivi e abbia la stessa esperienza frustrante che ho.

Il mio problema era simile a molti qui, messaggio di errore generico quando provavo ad usare lo scaffold per provare ad aggiungere un nuovo controller (ef6, webapi). Inizialmente sono stato in grado di utilizzare scaffolding per circa 15 controller, dopo di che ha smesso di funzionare un giorno.

Soluzione finale:

  1. Apri la tua cartella di lavoro sul tuo disco rigido per la tua soluzione.
  2. Elimina tutto all’interno della cartella BIN
  3. Elimina tutto all’interno della cartella OBJ
  4. Pulisci soluzione, ricostruisci soluzione, aggiungi controller tramite scaffolding

Ecco! (per me)

Ciò è in genere causato da un file Web.config non valido. Ho avuto lo stesso problema e ho scoperto di aver inavvertitamente cambiato il blocco dei commenti HTML in un blocco di commento lato server @* *@ (attraverso un’azione Sostituisci tutto).

E nel caso stiate sviluppando un’applicazione WinForms, provate a cercare App.config .

Ho lo stesso identico problema. L’ho incontrato per la prima volta seguendo il corso Pluralsight “Dati padre-figlio con EF, MVC, Knockout, Ajax e Validazione”.

Sto usando MVC 5, EF 6.1.1 e framework 4.5.2.

Anche dopo aver aggiornato il mio VS2013 per aggiornare 4, questo errore persisteva ancora.

È stato in grado di aggirare questo fastidioso problema cambiando il DbSet in IDbSet all’interno della class DbContext. La risposta era originariamente da qui .

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

Che cosa ha funzionato per me risolvere questo problema: chiudi soluzione e apri il progetto facendo clic sul file di progetto e non sul file di soluzione, aggiungi il controller e fai lo zio a tuo zio

Nessuno di questi ha aiutato per me.

Ho scoperto che la causa del mio problema era l’override di OnModelCreating nella mia class di contesto da cui dipendeva l’object scaffold. Commentando questo metodo, il ponteggio funziona.

Mi auguro che Microsoft rilascerà meno codice bacato.

Per noi ha qualcosa a che fare con le configurazioni di compilazione, dove abbiamo una configurazione di build Debug | x64 che abbiamo recentemente utilizzato, che a posteriori sembrava essere quando il ponteggio ha smesso di funzionare.

(Sospetto che ci siano almeno 10 cose diverse che possono causare questo, come evidenziato dalle varie risposte su SO che alcune persone trovano a lavorare per loro – ma che non funzionano per gli altri, quindi non sto suggerendo il mio soluzione funzionerà per tutti).

Cosa ha funzionato per noi (utilizzando VS 2013 Express per Web su Windows 7 a 64 bit):

It (scaffolding) NON funzionava nella configurazione di Debug | x64 Build. Ma fare il seguente (e sembra che ogni passo sia necessario – non è ansible capire come farlo in un modo più semplificato) sembra funzionare per noi.

  1. Per prima cosa, passa a Debug | x86 – usa la soluzione (tasto destro del mouse) Configuration Manager per tutti i progetti nella tua soluzione. (Debug | Qualsiasi CPU può funzionare anche).
  2. Pulisci la tua soluzione.
  3. Chiudi Visual Studio. (non riesco a farlo funzionare se salto questo).
  4. Apri Visual Studio.
  5. Apri la tua soluzione.
  6. Costruisci la tua soluzione.
  7. Ora prova ad aggiungere gli elementi di scaffolding; per noi, ha funzionato a questo punto, non abbiamo più ricevuto il messaggio di errore che diceva qualcosa su “Si è verificato un errore durante l’esecuzione del generatore di codice selezionato”.

Se è necessario tornare a una configurazione di build non impalcatura-scaffalatura, è ansible farlo, dopo aver impalcato tutto il necessario per il momento. Siamo tornati al nostro debug | x64 dopo l’impalcatura di ciò che ci serviva.

Ho visto questo errore con un nuovo progetto MVC5 quando si fa riferimento a un modello da un progetto diverso. Controllo del percorso, EntityFramework.dll esisteva. Era di sola lettura però. Il monitor di processo ha mostrato che si è verificato un errore durante il tentativo di eliminare il file. L’impostazione di EntityFramework.dll nella cartella dei miei pacchetti (copia archiviata nel controllo del codice sorgente) su scrivibile ha aggirato questo errore ma ne ha portato un altro dicendo che non è stato ansible caricare l’assembly EntityFramework perché non corrisponde a quello a cui si fa riferimento. La mia class del modello è stata definita in un progetto diverso che utilizzava una versione precedente del framework quadro. Il progetto MVC5 faceva riferimento a EF 6 mentre il modello proveniva da un progetto di riferimento EF 4.4. L’aggiornamento a EF 6 nel progetto del modello lo ha risolto per me.

Ho avuto questo problema durante il tentativo di aggiungere un controller Api alla mia app Web ASP.NET MVC per un motivo completamente diverso rispetto alle altre risposte fornite. Ho accidentalmente incluso un attributo StringLength con una dichiarazione IndexAttribute per una proprietà integer a causa di un’operazione di copia e incolla:

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

Una volta eliminata la dichiarazione IndexAttribute , sono riuscito ad aggiungere un controller Api per il modello che conteneva la proprietà offendente (NumTrainingPasses).

Per aiutare i motori di ricerca, ecco il messaggio di errore completo che ho ricevuto prima di risolvere il problema:

Si è verificato un errore durante l’esecuzione del generatore di codice selezionato:

Imansible recuperare i metadati per “Owner.Models.MainRecord”. La proprietà
‘NumTrainingPasses’ non è un array String o Byte. La lunghezza può essere configurata solo per le proprietà di una stringa o di un byte.

Questo è solitamente correlato a un formato di Web.config

Ricrea soluzione e ricerca sotto Errori, scheda Messaggi. Se hai problemi di formato con un web.config lo vedrai lì. Risolvilo e riprova.

Esempio: avevo connectionstring invece di connectionString

Nel caso in cui aiuti qualcuno, ho rinominato lo spazio dei nomi in cui risiedeva il modello, poi ho ricostruito il progetto, poi rinominato di nuovo, e ricostruito, e poi ha funzionato.

Ricostruisci la soluzione funziona per me. prima di ribuild, trovo che il numero di riferimento del mio ‘ApplicationDbContext’ è zero, che è imansible, quindi ricostruisci la soluzione, ora tutto è OK.

Spesso mi imbatto in questo errore che funziona con MVC5 e EF quando creo i modelli e il contesto in un progetto separato (My data access layer) e mi dimentico di aggiungere la stringa di connessione al contesto Web.Config del progetto MVC.

Sto riscontrando questo problema anche con MSVS2013 Update 4 e EF 6.0 Il messaggio che stavo ottenendo era:

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

Ho un modello con circa 10 classi. Ho elementi impalcati all’inizio del progetto senza problemi.

Dopo alcuni giorni aggiungendo funzionalità, ho provato a impalcare un’altra class dal modello, ma un errore mi impediva di farlo.

Ho provato ad aggiornare MSVS dall’aggiornamento 2 all’aggiornamento 4, commentare il mio metodo OnModelCreating e altre idee proposte senza fortuna.

Come un modo temporaneo per continuare con il progetto, ho creato un altro progetto asp.net, incollato lì le mie classi modello (sto usando API fluente, quindi c’è poca annotazione su di esse) e creato con successo il mio controller e le mie viste.

Successivamente, ho incollato le classi create al progetto originale e corretto alcuni errori (principalmente i nomi dbset).

Sembra che funzioni, anche se suppongo che troverò ancora degli errori relativi alle relazioni tra classi (a causa della mancanza di una configurazione fluente al momento della creazione).

Spero che questo aiuti gli altri utenti.

Questo è successo a me quando ho tentato di creare un nuovo scaffold al di fuori della cartella di livello superiore per una data area .

  • La mia area
    | – File.cs (provato a creare un nuovo scaffold qui. Errore.)

Ho semplicemente ri-selezionato la mia area e il problema è andato via:

  • AyArea (Aggiungi => nuovo articolo scaffold)

Si noti che dopo la generazione di scaffold si viene portati in un luogo in cui non sarà ansible creare un nuovo scaffold senza dover prima selezionare l’area (in VS 2013 almeno).

  • aggiornamento vs2013 4
  • ef 5.0.0
  • ibm db2connector 10.5 fp 5

cambia il file web.config come tale: rimosso il / i provider / i dal tag ef:

   

aggiunti tag di stringa di connessione sotto le sezioni di configurazione:

     

Ho avuto lo stesso problema quando nella mia proprietà di riferimento EF dell’app MVC (nella finestra Proprietà) “Versione specifica” era contrassegnata come False e nel mio altro progetto (contenente DBContext e modelli) che era stata aggiornata dall’app MVC che la proprietà di riferimento EF era contrassegnata come Vero. Quando l’ho contrassegnato come Falso, tutto andava bene.

So che sono fuori fino a tardi, ma era così frustrante quindi spero che questo possa aiutare un po ‘…

Il mio problema era simile a molte esperienze qui, un messaggio di errore generico durante il tentativo di aggiungere una nuova vista o utilizzare lo scaffold per aggiungere un nuovo controller.
Ho scoperto che mvc 5 ed ef 6 modelbuilder non sono buoni amici:

La mia soluzione:
1.Commenta modelBuilder nella tua class Context.
2.Clean Solution, Rebuild Solution.
3. Aggiungi vista e controller tramite scaffolding
4. Uncomment modelbuilder.

Forse un po ‘non convenzionale – ma ha funzionato! (per me)