8

A volte il framework di entità genera nomi di proprietà di navigazione terribili. Utilizzando il primo approccio del database, qual è il modo migliore per risolverlo?Ridenominazione delle proprietà di navigazione

Sono in grado di modificare i modelli di T4 a mio piacimento, ma come legherei questi nomi modificati a relazioni effettive? Dovrei semplicemente scrivere uno script per modificare il file edmx? Ovviamente, farlo a mano è difficilmente un'opzione.

+0

Non c'è un edmx in EF5. Stai parlando di EF4? – zsong

+0

@sza, è strano, afferma di essere la Versione 5 in Proprietà di Riferimento. Quello che ho effettivamente fatto è stato un "modello dati entità ADO.NET". –

+0

Penso che questo thread abbia una spiegazione più dettagliata di cosa modificare nei modelli EF 5.x T4 per ottenere ciò. http://stackoverflow.com/questions/12937193/improve-navigation-property-names-when-reverse-engineering-a-database – Bostrong

risposta

1

Sì, è possibile. Nella maggior parte dei casi è sufficiente rinominare NavPr dal progettista del modello EF e salvare il modello. Quindi EF rinomina NavPr nelle classi di entità DbContext.tt e non causa alcun problema.

In caso di problemi con il nome della ralation, fare clic con il tasto destro del mouse su NavPr rinominato e selezionare Proprietà. Quindi modificare la proprietà Association nella relazione effettiva nel database.

Se non è possibile visualizzare il nome della relativa relazione, eliminare quell'entità e tutte le altre entità che hanno una relazione con esso, fare clic con il tasto destro del mouse sul designer del modello e scegliere Update model from database. Quindi, rinominare semplicemente quel brutto NavPr e salvare il modello.

+3

Non voglio farlo nel modellista. Spesso ci sono troppi tavoli per questo. Inoltre, nel caso in cui fosse necessario generare un nuovo modello, tutte le modifiche andrebbero perse. Quello che mi piacerebbe è un modo per dire a EF quali convenzioni di denominazione usare. –

+0

È sufficiente rimuovere la convenzione di denominazione di EF sovrascrivendo 'OnModelCreating' in DbContext, e così facendo, è necessario dire tutto su naming properties, foreign keys, etc. su EF ...! In che modo è più semplice ?! – AminSaghi

+2

'OnModelCreating' è solo per Code First, non è vero? Ho bisogno di una soluzione che utilizzi Database First. –

Problemi correlati