Dopo aver aggiornato il nostro progetto dall'utilizzo di Entity Framework 5 a Entity Framework 6 (nonostante la funzione di aggiornamento di NuGets) ottengo il seguente errore nella mia classe Entities generata:
Errore 1 Il tipo o il nome dello spazio dei nomi 'Oggetti' non esiste nello spazio dei nomi 'System.Data'
(ti manca un riferimento all'assembly?)
Capisco che questo è perché lo spazio dei nomi è cambiato e posso correggere manualmente l'errore cambiando le mie importazioni da: using System.Data.Objects;
e using System.Data.Objects.DataClasses;
A: using System.Data.Entity.Core.Objects;
Tuttavia il file viene generato, quindi ho bisogno di riapplicare questa correzione dopo ogni Update model from Database
. C'è qualcosa in più da cambiare per ottenere EF per generare il modello senza questo errore.
Penso che il tuo problema sia che i tuoi modelli T4, che generano le entita e il contesto, sono ancora nella versione EF 5.
Per prima cosa è necessario eliminare gli elementi di generazione del codice corrente, che si trovano nel codice <Modelname>.Context.tt
del modello, ovvero <Modelname>.Context.tt
e <Modelname>.tt
.Next aggiungere un nuovo generatore di codice EF versione 6 con il Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator
.
Questa è la mia esperienza su come aggiornare correttamente Entity Framework v5 alla v6 per:
acronimi:
Elenco di controllo:
using System.Data.EntityClient;
, che è un riferimento EF5. using System.Data.Entity.Core.EntityClient;
qual è il corretto per EF6. Ancora bloccato? Questa checklist è un wiki della comunità, sentiti libero di modificare questa checklist per aiutare altre anime sfortunate che stanno ancora sbattendo la testa contro il muro di mattoni che può essere la configurazione di EF6.
Si prega di esplorare altre opzioni prima di considerare EF. È 100 volte più lento di altre opzioni, è molto complicato per ciò che offre, la GUI dell'entità è piena di bug e ha problemi di usabilità, e dovremo strappare tutto il nostro codice EF6 e sostituirlo con qualcosa che richiede meno di 5 minuti per fare una query che impiega 5 secondi in Dapper.