Il mio DataAccessLayer è stato implementato correttamente?

0

Ho 3 progetti nella mia soluzione:

  • Un progetto ASP MVC
  • Un progetto di app per console
  • Un progetto di libreria di classi (il DataAccessLayer)

Non volevo ricreare un modello di dati di entità ADO.net per ogni progetto, quindi ho "semplicemente" creato un nuovo progetto di libreria di classi e aggiunto il modello di dati di entità ADO.net al suo interno. È un modo usuale per creare un livello di accesso ai dati? Qualche miglioramento?

DbContext (progetto DAL)

public partial class ModelContainer : DbContext
{
    public ModelContainer(): base("name=ModelContainer")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Thread> Thread { get; set; }
    public virtual DbSet<Post> Post { get; set; }
    public virtual DbSet<Forum> Forum { get; set; }
    public virtual DbSet<SubForum> SubForum { get; set; }
    public virtual DbSet<Author> Author { get; set; }
}

Uso del DAL (controller ASP MVC)

public class ForumController : Controller
{
    private static ModelContainer db = new ModelContainer();

    public ActionResult Index()
    {
        //returns a list of forums
        return View(db.Forum);
    }
}
    
posta ptiflo 03.06.2018 - 21:25
fonte

1 risposta

3

Questo è il metodo più utilizzato per implementare il codice di accesso al database. Miglioramenti:

  • Aggiungi un livello aziendale che isola la tua console / app web dall'accesso diretto al livello di accesso ai dati. Il livello aziendale fornirà un contesto aziendale per le operazioni. Questo contesto astrae le operazioni e accorcia la quantità di codice richiesta nel livello di presentazione.
  • Crea una o più classi per incapsulare le operazioni del database. Quindi il livello aziendale non accede direttamente al contesto. L'aggiunta di interfacce come un contratto ti darà molta flessibilità. Solo per menzionare la capacità di prendere in giro queste classi nei test unitari e la possibilità di cambiare implementazione.
risposta data 04.06.2018 - 02:11
fonte

Leggi altre domande sui tag