2013-08-08 8 views
6

Ho uno strano problema quando aggiorno il mio modello EF (ver 5). Cancella tutte le classi che appartengono a quel modello.perché lo studio visivo elimina le mie classi quando aggiorno il modello di struttura dell'entità

La mia situazione era così. Ho cambiato la colonna chiave di due tabelle che hanno riferimenti alla mia tabella principale. L'aggiornamento del modello non ha apportato queste modifiche a edmx, quindi ho rimosso quelle tre tabelle (primaria e due tabelle di ricerca), salvato edmx. Quindi aggiornato il modello e aggiunto nuovamente quelle tabelle.

Una volta salvato il modello dopo averlo aggiornato, VS ha eliminato tutti i file di classe per questo edmx. L'edmx sembra ancora a posto con tutti i tavoli, solo le classi sono andate. Devo quindi ripristinare le mie ultime modifiche e riprovare.

Una cosa che ha funzionato è stata la modifica manuale del file edmx per apportare le modifiche appropriate alle classi interessate, ma non vedo perché dovrei farlo.

Qualche idea là fuori?

Grazie!

risposta

0

Si potrebbe provare una delle seguenti opzioni:

1) Fare clic destro sul file '.edmx' in Esplora soluzioni in Visual Studio e quindi selezionare la voce di menu 'Esegui strumento personalizzato'.

2) Appena sotto la barra del titolo di Solution Explorer, è possibile vedere un pulsante con la descrizione di un tool "Transform All Templates". Cliccalo. Dovrebbe aggiornare i tuoi modelli sotto il file "YourEdmxFileName.tt".

3) Nel menu 'Build' di Visual Studio, selezionare 'Transform All T4 Templates'.

4) Individuare i singoli file modello T4 (* .tt), fare clic con il pulsante destro del mouse su di essi e selezionare "Esegui strumento personalizzato".

+0

Alla fine ho trovato "Trasforma tutti i modelli T4" nel menu "Crea", ma non è riuscito a ricostruire l'edmx con cui avevo problemi. Alla fine ho appena ripristinato il mio codice e modificato manualmente il file. – Bauer

+0

hanno lo stesso problema .. problema estremamente stupido .. succede a caso a volte quando aggiorno dal database dopo aver cambiato qualcosa come non annullabile a nullable – krilovich

0

La stessa cosa è successa a me. Avevo una tabella con un valore stringa ma volevo cambiarla in una chiave esterna in modo da poter memorizzare i valori delle stringhe ricorrenti in una tabella separata. Così ho creato una nuova tabella e ho cambiato il tipo di colonna di stringhe in un int non annullabile e ho aggiunto una chiave esterna. Quando ho aggiornato il modello, ha contrassegnato tutte le classi di entità come eliminate ... non divertenti.

Ho anche notato degli errori che indicano che EF non ha modificato il tipo di colonna da stringa a int.

Le soluzioni menzionate sopra (lo strumento personalizzato e la trasformazione di tutti i modelli) non hanno funzionato per me.

Per me la soluzione era di cambiare il tipo di colonna da stringa a int manualmente nel modello prima e quindi aggiornando il modello, non si sono verificati più problemi.

Per la cronaca: questo è accaduto in EF 4 in Visual Studio 2010.

+0

Questo mi è successo usando Visual Studio 2013 e Entity Framework versione 6.0.0.0, con una versione runtime di v4.0.30319. Avevo appena aggiunto due stored procedure senza cambiare il modello. Questo problema mi è successo in passato in un'altra occasione, senza che io notassi il cambiamento del modello che l'ha causato. Utilizzo questa tecnologia da più di 2 anni. @ @ Beastieboy, non ho trovato nulla sotto la funzione Esegui strumento personalizzato, né ho trovato il pulsante che hai menzionato. –

+0

Ho anche aggiunto una relazione di chiave esterna. –

0

Al fine di risolvere questa situazione, mi sono trasferito tutti i file di definizione tavolo fuori dalla directory che il mio modello era situato in Ho poi. ha detto al Team Explorer di annullare le eliminazioni. Ha aggiunto i file alla mia directory e sono riuscito a procedere.

+0

Non stavo usando tfs, stavo usando subversion. – Bauer

6

Un modo in cui questo si verifica dopo la rimozione, quindi aggiungere di nuovo una tabella per ottenere EDMX per prendere una modifica a una colonna Chiave esterna (FK).

Succede perché le relazioni con altre tabelle non vengono aggiornate.

Per questa risposta, https://stackoverflow.com/a/34144341, per risolvere manualmente questo problema, filtrare l'Elenco errori con "Solo build" e quindi risolvere manualmente eventuali errori di compilazione nell'editor EDMX. Presta attenzione alla molteplicità delle relazioni.

In alternativa, il controllo di versione uso per ripristinare l'intero cambiamento EDMX e ricominciare, utilizzando il seguente metodo:

Piuttosto che rimuovere e aggiungere di un'unica tabella contenente la colonna FK che ha cambiato, rimuovere e aggiungere nuovamente tutte le tabelle che hanno una relazione con qualsiasi colonna FK modificata.

0

Assicurarsi di non avere alcuna variabile con una convenzione di denominazione di _. Se ce ne sono, EF fallirà e riscriverà di nuovo tutte le classi.

Cambiare il nome della variabile p_ mi ha aiutato.

0

Ho avuto un problema simile.

Im utilizzando VS2013, EF6 e connessione a ORACLE 11G (prima il database).

Ho aggiunto una tabella, che aveva una chiave esterna in un'altra tabella. Per qualche ragione, il tipo di chiave esterna era diverso in quelle due tabelle.

Aggiornamento del tipo di chiave esterna risolvere il mio problema.

Problemi correlati