Il codice generato utilizzando i modelli T4 per lo sviluppo Database First e Model First potrebbe non funzionare correttamente se utilizzato in modalità Code First

Sto usando il lavoro di frame Entity nella mia applicazione asp.net MVC 4. Ho un file edmx. Sto cercando di usare l’entity framework di questo modello EF per popolare un viewmodel come questo:

using (var context = new VehiclesContext()) { IEnumerable vehicles = context.Vehicles.Select(x => new SearchedVehicles { Year = x.Year, Make = x.Make, Model = x.Model, Mileage = x.Mileage, VIN = x.VIN }); return View(vehicles); } 

I veicoli sono quadro in EDMX dove SearchVehicles è viewmodel ma ottengo questa eccezione:

 Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode. To continue using Database First or Model First ensure that the Entity Framework connection string is specified in the config file of executing application. To use these classs, that were generated from Database First or Model First, with Code First add any additional configuration using attributes or the DbModelBuilder API and then remove the code that throws this exception. 

su questa linea:

  protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } 

Questo è per design. Hai creato un modello dal database, che indica che il tuo codice non dovrebbe mai creare un database.

Il messaggio di errore che si ottiene, si verifica perché non trova il database e quindi tenta di crearlo.

Per risolvere questo problema, è necessario verificare la propria connessione per accertarsi che possa trovare il database a cui si desidera connettersi. Se vuoi veramente creare il database, devi prima cercare il codice. Ciò significa rimuovere la riga “lanciare una nuova eccezione” e continuare a utilizzare il modello (questo significa che non è più ansible aggiornare il modello dal database, poiché in tal caso reinserirà la riga di eccezione) oppure è ansible decodificare un database per codificarlo. primo modello.

vedere http://msdn.microsoft.com/en-us/data/jj593170.aspx per suggerimenti di ingegneria inversa.

Ho avuto lo stesso errore ‘Codice generato usando i modelli T4 …’. Il mio problema era diverso da quello sopra. Lo schema della mia tabella di database è stato modificato. Quindi, dopo l’aggiornamento, stavo modificando edmx aprendolo come xml (fare clic su rt e dire Apri con … e selezionare xml). Dopo aver corretto tutti gli errori in xml, quando eseguo l’applicazione, ottengo l’errore sopra riportato. Quindi la prossima volta annullo tutto in TFS e continuo rimuovendo e aggiungendo nuovamente le tabelle problematiche dalla pagina del diagramma di Edmx. In questo modo, hai aiutato a risolvere l’errore precedente. Anche imparato, non modificare mai il file edmx in modalità xml.

Felice codifica.