Organizzazione del livello di accesso ai dati

5

Sto utilizzando Entity Framework come mio ORM in un'applicazione ASP.Net. Ho già creato il mio database così finito da generare il modello di entità da esso. Qual è un buon modo per organizzare file / classi nel livello di accesso ai dati. Il mio modello di struttura dell'entità si trova in una libreria di classi e stavo pianificando l'aggiunta di ulteriori classi per entità (vale a dire per tabella di database) e inserendo tutte le query relative a tali tabelle nelle rispettive classi. Non sono sicuro se questo è un approccio corretto e se è allora dove vanno le query che richiedono dati da più tabelle? Ho sbagliato completamente nell'organizzare i miei file sulla base di entità / tabelle e dovrei organizzarli in base a aree funzionali.

    
posta nighthawk457 30.11.2011 - 00:18
fonte

2 risposte

2

Nel progetto a cui sto lavorando ora stiamo utilizzando ASP.NET MVC e Entity Framework 4.1. Avevamo anche un database in primo luogo, ma ci è venuta l'idea di utilizzare gli oggetti POCO generati dai modelli T4 basati su DBSet.

Nel nostro progetto, abbiamo un assembly chiamato business che ha uno spazio dei nomi dei dati. All'interno di questo spazio dei nomi si trova il DBContext e vengono generati i live di POCO. Non lo tocchiamo una volta che l'accesso ai dati è stato creato. Ora, inoltre, abbiamo una serie di repository che stiamo usando; 1: eseguire le esigenze CRUD di base e 2: creare e distribuire oggetti di trasferimento dati personalizzati fino al front-end.

Nel front-end è dove utilizziamo le annotazioni dei dati sul DTO personalizzato o su ViewModel personalizzati per esigenze specifiche. La nostra ipotesi è che dovremmo convalidare i dati provenienti dal front-end il più rapidamente possibile e quindi rinviare i modelli puliti ai repository. Non siamo troppo preoccupati per il tracciamento delle modifiche all'entità o per qualcosa del genere per il framework di entità, purché salviamo e tiriamo con successo.

Finora questo ha funzionato per noi. Spero che questo ti aiuti un po ', e buona fortuna per il tuo progetto.

    
risposta data 30.11.2011 - 04:09
fonte
1

Ecco alcune idee, che ho visto e utilizzato in current & precedente lavoro.

  • Crea un progetto separato come "nome del progetto" .Data

  • Crea classi parziali delle tue classi EF. Aggiungi funzioni di acquisizione statiche e una funzione di salvataggio derivata da un'entità di base ereditata da EntityObject

  • Utilizzare un modello come Unità di lavoro e archiviare l'ObjectContext in HTTPContext per gestire le connessioni.

link

link

    
risposta data 30.11.2011 - 02:41
fonte

Leggi altre domande sui tag