2012-12-06 5 views
5

Ho un metodo in MyWebpage.aspx.cs Lik così:Qual è l'approccio migliore quando si creano oggetti di accesso ai dati?

public partial class MyWebpage : PageBase 
{ 
    private readonly DataAccessLayer dataAccessLayer; 

    protected string GetMyTitle(string myVar, string myId) 
    { 
     if (string.IsNullOrEmpty(myVar)) 
     { 
      return string.Empty; 
     } 

     return dataAccessLayer.GetMyTitle(Convert.ToInt32(myId), myVar); 
    } 
} 

Nella classe DataAccessLayer, ho un methoud che parla al DB e fa la roba DAL e restituisce il titolo.

Qual è la procedura migliore per accedere al DAL dalla classe MyWebPage.aspx.cs (come in ho bisogno di creare ogni volta un nuovo oggetto DataAccessLayer()? Dove dovrei crearlo nella mia classe PageBase o ogni volta che lo chiamo in un codice dietro?

risposta

5

La prima cosa è accedere al DAL dal codice dietro o livello di presentazione in genere non è una buona pratica. Perché in questo caso è necessario inserire il codice di logica aziendale nel codice (Presentation Layer) che causa conflitti di preoccupazioni, elevato accoppiamento, duplicazione e molti altri problemi. Quindi, se siete cercare le migliori pratiche, suggerisco di dare un'occhiata ai seguenti link:

E questi sono veramente buoni libri :

Avere anche una funzione statica per chiamare il DAL. Come sapete, le funzioni statiche sono vulnerabili al multi-threading, quindi se si utilizza qualcosa di condiviso nelle funzioni DAL (che talvolta è il caso, come la connessione condivisa, il comando, ecc.) Si romperà il codice, quindi penso sia meglio evitare le funzioni statiche in questo livello.

0

io sono un fan del repository pattern. Ognuno ha il proprio prendere su di esso, ma mi piace l'idea di una tabella SQL => un repository e condividere il nome, proprio come strumenti ORM.

Entity Framework potrebbe rendere rapido il lavoro del DAL ed è ancora possibile implementare un modello DAL come repository

Ecco un code generator che accetta una stringa di connessione SQL e fornisce un'implementazione abbastanza standard del blocco di applicazioni di accesso ai dati aziendali. Non è molto robusto in quanto è stato progettato contro uno schema blando sql. Se si utilizza il database di esempio, questo vi fornirà esempi di codice che è possibile utilizzare per progettare un livello di accesso ai dati a proprio piacimento.

+0

Una tabella per repository - ma cosa succede se si modifica la struttura del database? –

+0

Qual è il tuo suggerimento di modello che non ha bisogno di essere cambiato quando il database cambia? – TheDev6

+0

Utilizzare qualcosa come Entity Framework per eseguire la modellazione a livello concettuale, con un livello di mappatura per mappare la struttura fisica del database. In questo modo, il livello aziendale non ha bisogno di sapere se una particolare entità è implementata in una tabella o tre. –

Problemi correlati