2011-11-23 17 views
10

Da zero, ho creato una nuova soluzione con due progetti: uno era MVC 3 e l'altro un progetto EF 4.2 di supporto. Il tutto si costruisce con successo. Dal progetto MVC apro il dialogo "Aggiungi controller" e lo faccio generare un codice basato sul contesto e sul modello che seleziono dal progetto EF di supporto. Il dialogo "Aggiungi controller" non riesce con il messaggio:MVC "Aggiungi controller" è "Impossibile recuperare i metadati ... Impossibile inizializzare il sistema di configurazione"

Impossibile recuperare i metadati per "MyModelClass". Impossibile inizializzare il sistema di configurazione.

Ho notato che il dialogo "aggiungi controller" sta effettivamente tentando di recuperare la stringa di connessione al database dal suo file web.config. Innanzitutto, questo mi sembra un po 'sciocco, dal momento che il progetto EF di supporto ha già un app.config con la stringa di connessione. Ma non pensandoci, la cosa migliore che riesco a capire è che la stringa di connessione nel web.config è in qualche modo cattiva. Questo è ciò che sembra:

<add name="Monsters2Entities" 

    connectionString=" 
     metadata=res://*/Monsters.csdl| 
       res://*/Monsters.ssdl| 
       res://*/Monsters.msl; 
     provider=System.Data.SqlClient; 
     provider connection string=&quot; 
     data source=.; 
     initial catalog=Monsters2; 
     integrated security=True; 
     pooling=False; 
     multipleactiveresultsets=True; 
     App=EntityFramework 
     &quot;" 
     providerName="System.Data.EntityClient" 
/> 

La stringa di connessione non in realtà hanno tutte le interruzioni di riga ridicolo e rientro - Sto solo cercando di rendere più facile da leggere. Ad ogni modo, quella stringa di connessione è fondamentalmente identica alla stringa di connessione utilizzata nel progetto EF di supporto su cui è modellata. Come posso correggere la situazione, per rendere felice il dialgoue "aggiungi controller"?

+0

Avevo un file web.config per uno dei miei progetti ed era diviso in parti. Quando provo ad aggiungere controller come hai fatto, ho ricevuto lo stesso errore. Lo faccio un file e ha funzionato magicamente. non ci ho pensato molto. – tugberk

+0

Guarda qui http://stackoverflow.com/questions/6508516/asp-net-mvc-3-unable-to-find-the-requested-net-framework-data-provider – Baidaly

+0

Il tuo secondo progetto è un progetto di libreria di classi? – Misi

risposta

1

Prova questo:

<add name="Monsters2Entities" 

    connectionString=" 
     metadata=res://*/Monsters.csdl| 
       res://*/Monsters.ssdl| 
       res://*/Monsters.msl; 
     provider=System.Data.SqlClient; 
     provider connection string=' 
     data source=.; 
     initial catalog=Monsters2; 
     integrated security=True; 
     pooling=False; 
     multipleactiveresultsets=True; 
     App=EntityFramework 
     '" 
     providerName="System.Data.EntityClient" 
/> 

ho sostituito &quot; con '

+0

La modifica dei segni di spunta codificati per i ticks letterali non ha risolto il problema. Credo che il problema sia con la semantica piuttosto che con la sintassi. –

+0

Ottengo 'Impossibile caricare la risorsa di metadati specificata. – Maslow

-1

necessario prima di installare Entity Framework pacchetto

andare strumento> Libray console di gestione dei pacchetti> pakage Manager>: l'installazione Entità quadro

+1

Avrebbe problemi con le Entità se non avesse già installato EF. –

2

Basta copiare le informazioni della stringa di connessione da voi progetto Modello R EF app.config nella vostra e guardare che non si ripete tutte le sezioni (sezione EntityFramework per esempio)

+0

Questo ha funzionato per me. Il mio progetto web MVC5 si lamenta dei metadati per la stringa di connessione. Ho appena copiato la stringa di connessione dall'app del progetto EF6.config a web.config. Quindi potrei aggiungere controller e vista scafoldata. – bob

0

ho trovato thjis aiutato quando ho avuto questo problema:

Disinstallata la versione preliminare di EF e installata EF5 È stata spostata su Sql Server Object Explorer e cancellato il db. Ricostruita la soluzione utilizzato PM> Update-Database -Verbose

Forse il problema era con EF pre-release o semplicemente pulizia del palato era tutto di cui aveva bisogno.

Sono abbastanza nuovo a tutti questi, ma questo mi ha permesso di utilizzare lo strumento di impalcatura Aggiungi Controller con il modello "MVC controller con azioni di lettura/scrittura e recensioni, utilizzando Entity Framework" selezionato.

+0

Benvenuti in So. probabilmente una domanda viene posta nel blocco di risposta. Per favore scrivi una nuova domanda per questo tipo di domande. – Luv

+0

Grazie. Non stavo facendo una domanda. Cercando di offrire assistenza con la soluzione che ho trovato affrontando lo stesso problema. – ajw1970

0

Prima di tutto è necessario verificare che la stringa di connessione sia nel file Web.Config in ROOT! del tuo progetto dopo quel controllo se c'è un'altra stringa di connessione o no se c'è un'altra stringa di connessione sostituiscila con la tua stringa di connessione .... Questo risolto il mio problema, che era lo stesso come il vostro di ....

8

avevo installato EF 6 che ha aggiunto:

<providers> 
    <provider invariantName="System.Data.SqlClient" 
     type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

Nel mio file di configurazione. Avevo altri problemi di impalcatura e così ho deciso di tornare a Ef 5. Dopo aver disinstallato EF 6 e reinstallato EF 5, ho eliminato il file dalla configurazione e quindi sono riuscito a creare il mio nuovo controller. Ho scoperto questo utilizzando il

PM> Update-Database –Verbose 
0

sono riuscito a risolvere il mio problema cambiando strategia di generazione di codice del edmx a T4, l'aggiunta di un contesto EF5 Db e sostituzione% edmxInputFile% sia nel * .tt e * .Context. file tt.

0

Rinominare la classe del modello - ha lavorato per me

0

Sei sicuro di avere un ConnectionString nel file web.config, prima di creare un controller? A volte creiamo un altro progetto che contiene il Contesto DB entità e ci siamo dimenticati di aggiungere questa stessa connessioneString in Web.Config all'interno di un altro progetto.

<connectionStrings> 
    <add name="Monsters2Entities" ... /> 
</connectionStrings> 
1

ho aggiunto questo al mio file Global.asax in modo che a) il database è stato avviato immediatamente e b) è stata aggiunta la definizione della tabella. consentendo al controller di trovare la definizione della tabella:

System.Data.Entity.Database.SetInitializer<ProjectName.DAL.DBConnectContextName>(new CreateDatabaseIfNotExists<ProjectName.DAL.DBConnectContextName>()); 
0

Affronto questo problema "Impossibile recuperare i metadati ..." mentre ero ggiunta un controller. La soluzione per questo è la seguente.

  1. In cambio stringa di connessione provider per 2.Or Rimuovere la stringa di connessione dal web.config e aggiungere regolatore "System.Data.SqlClient" e dopo l'aggiunta del controller di nuovo aggiungere la stringa di connessione.

Sembra che questo sia un bug in MVC. Spero che con questo tu possa andare avanti.

Problemi correlati