Ottenere dati da un database con il modello MVC

2

Sto creando un'applicazione che avrà un database molto grande per disegnare le sue informazioni da (un sistema di registrazione degli studenti per essere precisi). Il database viene creato con Microsoft SQL Server se ciò è importante. Ho intenzione di implementare il pattern MVC in questo, ma non sono sicuro di come gestire l'accesso al database.

La mia attuale comprensione di come dovrebbe funzionare è questa (per favore correggimi se c'è un modo migliore per farlo):

  1. Ho un modello (ad esempio Utente) che contiene alcuni attributi e alcune logiche di business.
  2. Quando ho bisogno di visualizzare o modificare i dati nella tabella, ottengo i dati rilevanti e li metto in un modello, lo cambio e poi "salva" le modifiche al database. Quindi, per esempio, se devo cambiare il nome di uno studente, cercherò il database per quello studente (per numero ID) e istanziamo un nuovo oggetto Utente. Vorrei quindi modificare la proprietà Name dell'oggetto User ed eseguire un metodo "save" che carica i dati nel database.

Credo di avere due domande: in primo luogo, sto comprendendo come il pattern MVC funziona con le applicazioni basate sui dati e in secondo luogo da dove viene il codice per ottenere i dati dal database per istanziare un modello? Va nel controller per detto modello? Va in qualche altra classe statica? È un costruttore per il modello?

    
posta Omegastick 13.04.2016 - 14:05
fonte

1 risposta

2

In realtà devi creare un Data Access Layer :

1- Crea una nuova libreria di classi [ProjectName].DataAccess

2- Crea una classe denominata UserManager .

3- Creare un metodo chiamato AddUser che utilizza il modello utente come argomento.     e all'interno di quel metodo, si scrive la logica per inserire l'utente nel database.

A seconda della Scala del tuo sistema, potresti voler creare un Bussiness Layer (Libreria di classi) che si utilizza nel controller per chiamare uno dei livelli di accesso ai dati (SQL o Oracle o ecc.). Se si raggiunge tale complessità, potrebbe essere necessario creare interfacce con (AddUser, GetUser, DeleteUser) e fornire SQL e Oracle Class Implementazione di tale interfaccia e sceglierne uno dalla tua configurazione.

Se hai bisogno di maggiori dettagli, ti preghiamo di farmelo sapere.

Modifica dopo il tuo commento:

Potresti avere GetUsers() e GetUserByID(int id) o da Name Qualunque cosa. Tutto dipende da ciò che ti serve nell'interfaccia utente e dalle funzionalità che offri all'utente.

Tuttavia, non dovresti interrogare tutti i dati dal database e filtrare ciò che l'utente ha richiesto tramite codice, devi solo interrogare i dati che ti servono dal database. A meno che tu non mostri l'elenco completo nell'interfaccia utente e offri la funzionalità di ricerca sullo schermo.

Se tirare una tabella completa dal database è qualcosa su cui riflettere prima di farlo. Nelle applicazioni reali, devi considerare la dimensione del tavolo, se ne hai uno enorme potrebbe essere necessario farlo pre-filtro (dove l'utente finale seleziona un dipartimento per esempio e quindi chiami GetUsersByDepartment(int depId) ). Ad ogni modo, puoi avere un'opzione per interrogare tutti gli utenti se l'utente finale lo richiede tramite lo schermo dell'app, ma potrebbe dover attendere che i dati vengano estratti. Tutti questi metodi dovrebbero essere in te Data Access Layer per ora considerando il tuo caso di non avere un Business Layer .

    
risposta data 13.04.2016 - 15:01
fonte

Leggi altre domande sui tag