Quali sono i vantaggi/svantaggi di ciascun metodo?Entity Framework 4, che eredita rispetto all'estensione?
So che ho letto da qualche parte sia in un libro o su questo sito perché l'utilizzo di ereditarietà delle tabelle è pessima per Entity Framework 4.
Per esempio, perché non fare una tabella che ha un EntityID, DateCreated, DateModified e quindi ogni altra classe eredita quella nel framework di entità? Quindi le mie tabelle per tutte le altre entità non hanno bisogno di avere quelle colonne. Quindi posso avere una classe persona ereditare quella classe base, e poi una persona specifica ereditare una persona.
non sono certo dei vantaggi di questo, però diversa da scrivere uno script SQL più piccolo per generare il database ...
Svantaggi vedo sono che rende l'esecuzione di query/visualizzazione dei dati direttamente in SQL un grande dolore nel culo (tutte le informazioni rilevanti sono suddivise tra tanti tavoli), e ho anche chiesto al mio amico che ha detto:
"La cosa più importante che mi viene in mente è il fatto che non vorrei che il mio database fare affidamento sull'attuale struttura ereditaria della mia domanda, se, per qualsiasi ragione, volessi cambiare il design della mia applicazione in termini di ereditarietà, non avrebbe importanza perché i miei dati non sarebbero essere dipendente dal mio attuale design di sistema. Penso all'archiviazione dei dati proprio come questo: l'archiviazione. il database è normalizzato in base alla corretta progettazione del database, ma l'ereditarietà è una scelta programmatica dello sviluppo dell'applicazione, non della memorizzazione dei dati. solo questo mi avrebbe impedito di usarlo. l'ereditarietà è una cosa molto difficile da fare correttamente quando si tratta di progettare un'applicazione. è molto più facile cambiare il codice dell'applicazione che modificare e migrare i dati del database quando la maggior parte degli sviluppatori meno esperti si avvicina a un problema, si avvicinano con l'ereditarietà. l'ho fatto anche io quando ho iniziato a sviluppare. logicamente ha senso. tuttavia, una volta in via di sviluppo per lungo tempo si impara che la delega è davvero il modo migliore per andare (servizi di servizi di chiamata in caso di SOA) e che i servizi monouso offrono molto di più il riutilizzo di eredità ".
Quale ha senso anche per me.
Così
1) In generale, quali sono i pro/contro di eredità vs estendere
2) Nel mio esempio specifico di cui sopra, ciò che sarebbe più appropriato?
3) Se il mio esempio è schifoso per entrambi o entrambi, quale è un buon esempio per usare l'ereditarietà e per usare l'estensione?
Ho usato entrambi prima ma, come sono lontano da stagionato, non sono ancora sicuro di come gestire tutte le situazioni.
10 voti, 8 preferiti, oltre un centinaio di visualizzazioni e nessuno può espandersi? = (.
Grazie per la risposta BP, c'è qualche possibilità di ampliare ulteriormente questo? O non ci sono altri pro e contro? Quale sarebbe un buon esempio per l'utilizzo dell'ereditarietà? – SventoryMang
In realtà, .OfType viene filtrato sul lato SQL, IIRC –