Dove inserire i nomi della tabella / colonna del database?

1

Sto creando un'app Web che eseguirà una query su un database esistente. Sto pensando di inserire i nomi delle tabelle e delle colonne in una singola classe statica e quindi fare riferimento a ciò durante la costruzione di query. Penso che ciò aiuterebbe con la mantenibilità, poiché se in futuro una colonna viene rinominata per qualche motivo, è sufficiente cambiarla in un unico punto.

Questo è un buon modo per farlo? C'è un modo migliore?

    
posta HamHamJ 17.09.2014 - 17:15
fonte

2 risposte

5

In un'architettura correttamente disaccoppiata, l'applicazione non dovrebbe avere alcuna conoscenza del modello di database fisico. Inserire i nomi di tabelle e colonne nelle classi crea una dipendenza che potrebbe violare l'applicazione se ci sono modifiche importanti al database oltre alle semplici modifiche di tabelle e colonne.

Per un'applicazione di alcune dimensioni e complessità, le pratiche migliori sono quelle di utilizzare un ORM (Object Relational Mapper) come Entity Framework (come rilevato da Magus), NHibernate o altre opzioni più leggere. Un ORM gestisce la mappatura tra il database fisico e le tue classi in modo che ciascuna sia indipendente.

Un'altra opzione è quella di utilizzare un servizio Web di qualche tipo per fornire quel livello di astrazione tra il database fisico e l'applicazione.

Queste opzioni ti consentono di apportare modifiche all'interno di un database o persino di cambiare piattaforme di database, mantenendo al minimo le rilavorazioni.

Se stai costruendo un'applicazione molto semplice e non prevedi molte modifiche al database, un ORM o un servizio dati separato potrebbe essere eccessivo. C'è sempre un compromesso.

    
risposta data 17.09.2014 - 17:49
fonte
4

I'm thinking of putting the names of the tables and columns and such into a single static class...

Non farlo.

Se vuoi eliminare stringhe magiche, fai un favore a te stesso e crea una classe statica per tabella sotto uno spazio dei nomi condiviso.

Una singola classe statica per gestire tutti i nomi di tabelle e colonne si trasformerebbe rapidamente in una grande palla di fango.

    
risposta data 17.09.2014 - 18:22
fonte

Leggi altre domande sui tag