2012-11-19 3 views
41

Se apporto qualche modifica al modello EF 5.0, VS non sembra vedere le modifiche. Ho provato ad aggiungere una nuova tabella, che si presenta bene nel modello, ma poi se provo ad usarlo da qualche parte la tabella non compare in intellisense e non posso usarla.Dopo aver aggiornato il modello Entity Framework, Visual Studio non vede le modifiche

Ho anche provato a cambiare i tipi di dati di una colonna, che di nuovo si presenta bene se guardo il file di modello .edmx, ma visual studio mi darà ancora errori di compilatore su quel campo perché sto cercando di assegnare il tipo di dati errato .

Se elimino completamente EDMX e lo ricrei, le modifiche funzionano correttamente. ma è stancante rigenerarsi dal database ogni volta che dovrei essere in grado di "aggiornare il modello dal database" e ricostruire.

Non ho mai avuto questi problemi con EF prima. Qualcuno conosce la causa o la correzione di questo problema?

Grazie.

+1

Qual è la strategia di generazione di codice per la vostra edmx? (Apri edmx, premi F4) – Heather

+1

@Heather È impostato su "Nessuno". Ho provato a cambiarlo in 'Default', pensando che dovesse essere il problema, e ora ho dozzine di errori che dicono che Type [table] contiene già una definizione per [column] per ogni tabella/colonna che ho. qualche idea? – Kyle

+1

Sì, hai risolto la prima metà del tuo problema. "Nessuno" non genererà alcun codice. Ora che stai generando il codice, devi risolvere le incoerenze logiche tra il tuo database e il tuo edmx. In generale ci sono due modi per farlo: il primo è quello di eliminare ogni entità da edmx e quindi eseguire un aggiornamento dal database. – Heather

risposta

15

Se questo è il bug con il file edmx trova in una cartella che è stato corretto - scaricare e installare VS 2012 Update 1. È possibile ottenere da: http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

+0

ha avuto lo stesso problema, ha installato l'aggiornamento e ha funzionato dopo un aggiornamento della tabella in edmx. Versione 4.4 di EF, era giunto il momento di risolvere questo problema! –

+0

Basta andare su. Non funziona quando sono aperte più soluzioni con EF. È necessario chiuderli tutti in modo che VS possa rilevare le modifiche. (anche se ci sono progetti completamente separati.) –

+2

Ho VS 2013 Update 1, ma succede lo stesso bug. –

0

Stai lavorando in un progetto N-Tiered? Se è così, prova a ricostruire il tuo Data Layer (o ovunque sia memorizzato il tuo file EDMX) prima di usarlo.

+0

edmx si trova nello stesso progetto in cui lo sto usando. Ho provato a commentare gli errori del compilatore comunque, senza successo. – Kyle

+0

Vorrei esaminare cosa suggeriva Heather sulla tua domanda. Nel tuo caso la strategia di generazione del codice dovrebbe essere impostata su Predefinito. – Middas

+0

Vorrei anche controllare la tabella e le colonne, assicurarsi che siano accessibili pubblicamente. – Middas

7

Si dovrebbe avere un file <XXX>Model.tt da qualche parte che è il modello T4 che genera le classi del modello.

Se si trova in un progetto diverso, non verrà aggiornato quando si salva il file edmx.

In ogni caso, provare tasto destro del mouse su di esso in Esplora soluzioni e scegliendo Run Custom Tool

+0

Anche al contrario: se si seleziona 'Esegui strumento personalizzato 'senza aver salvato il file edmx, le entità non verranno aggiornate. – bvgheluwe

13

Questo è apparentemente un bug nel Entity Framework che il modello non viene aggiornato quando il file EDMX si trova all'interno di una cartella. Le soluzioni disponibili al momento sono:

  1. Installare VS 2012 Update 1 che dovrebbe risolvere il bug.
  2. Se non si è in grado di installare l'aggiornamento 1, sarà necessario fare clic con il pulsante destro del mouse sul file modello T4 model.tt e fare clic su Esegui strumento personalizzato. Questo aggiornerà le classi per te.

Spero che aiuti qualcuno là fuori.

Link: http://thedatafarm.com/blog/data-access/watch-out-for-vs2012-edmx-code-generation-special-case/

+0

È ora risolto - vedi la mia altra risposta. – Pawel

+0

haha ​​nice one Pawel, sembra che abbiamo pubblicato la stessa soluzione entro un'ora l'una dall'altra. – Ghlouw

+0

Grazie, ora lavora per me dopo aver eseguito lo strumento personalizzato. – arunlalam

52

prima build il tuo progetto e se ha avuto successo, punta il "model.tt" nel contesto. quindi esegui lo strumento personalizzato. Lo risolverà.

Ancora Crea il tuo progetto e punta a "model.context.tt" esegui lo strumento personalizzato. aggiornerà gli elenchi DbSet.

+0

Funziona come un fascino. – shazia

+1

Grazie mille per questo! Sembra che questo bug sia tornato in VS2013 Update 3, ma seguire questo suggerimento è un lavoro facile e veloce. – Patrick

+0

Grazie mille. Ho dovuto mostrare prima gli elementi esclusi quindi reincludere i file .tt per eseguire lo strumento. –

6

Avevo anche questo problema, tuttavia, facendo clic con il pulsante destro sul file model.tt e eseguendo "Strumento personalizzato" non ho fatto alcuna differenza per me in qualche modo, ma un commento sulla pagina Ghlouw collegato a menzionato per utilizzare il menu item "BUILD> Trasforma tutti i modelli T4."Che ha fatto per me

2

Ho cercato questa risposta perché ho avuto una situazione simile in VS2013. Nel mio caso, ho scoperto che un semplice" Clean Solution "eliminato tutte le vecchie definizioni.

0

ho Anche questo problema si è verificato con nessuna delle classi generate sotto il file model.tt. Nel mio caso si trattava di problemi con il modo in cui avevo costruito il DB in SQL2012. Avrei impostato una colonna in una tabella a nullable che era anche una chiave esterna e anche se penso che dovresti essere in grado di farlo, ha causato un problema in EF5

Non appena questo è stato cancellato e lo schema aggiornato dal database sono riapparsi.

EF5 VS2013

1

fare clic destro sul file .tt e selezionare "Esegui strumento personalizzato", che dovrebbe aggiornarlo: see image