Siamo all'inizio di un progetto di sviluppo molto lungo con diversi sottoprogetti. Fondamentalmente, ogni sottoprogetto richiederà diversi mesi per svilupparsi. Il codice stesso verrà suddiviso in diversi progetti C#, ma il database fisico sarà condiviso da tutti i progetti.DAL Future Proof
Il problema è la manutenibilità. Se aggiungiamo una colonna a una tabella o dividiamo una tabella in due tabelle più piccole, dovremo tornare indietro e modificare il nostro C# DAL per supportare queste modifiche. Questo non è accettabile, poiché adatteremo costantemente il DB alle esigenze dell'azienda nel suo insieme e non solo alle esigenze di un singolo programma. Cambiare costantemente il vecchio codice sarebbe un compito infinito.
Le nostre persone di DB hanno suggerito una vista diversa. Facciamo tutto il nostro CRUD attraverso stored procedure e usiamo Linq su più tabelle per eseguire le nostre istruzioni SELECT. Quindi, se ristrutturiamo il DB tra diversi anni, possiamo semplicemente fornire gli stessi proc e viste memorizzati e non dover modificare il nostro vecchio codice.
La domanda che abbiamo è che cosa deve essere utilizzato ORM per qualcosa di simile? EF sembra un po 'eccessivo (forse non lo è). Qualcosa come SubSonic con il suo template T4 permetterebbe un DAL più semplice (e forse più veloce)?
O forse qualcuno ha un'idea su come rendere questo intero processo meno doloroso? Preferiamo non aggiungere un altro livello alla nostra applicazione, ma nemmeno vogliamo tornare indietro e modificare il codice ogni volta che eseguiamo una modifica del database.
Modifica 1: Così, quando ho detto "Non voglio aggiungere più livelli". Questo è principalmente perché abbiamo già diversi livelli. Abbiamo viste Silverlight, view-models, oggetti BLL (tramite CSLA), quindi abbiamo il DAL e infine le tabelle SQL themseleves.
Quindi, provando ad avere uno schema per servirli tutti, si arriva fondamentalmente al modello che fa schifo. Mi chiedo sempre come la gente possa aspettarsi di cambiare il DB senza toccare le App che lo accedono. Questo sembra surreale. – flq
L'integrazione attraverso il database è passata di moda alla fine degli anni '70. A meno che tu non stia usando un OODB come Gemstone. –
Sono l'unico a pensare che questa domanda otterrà molte visualizzazioni e molte risposte, ma non molto utili? –