VALIDARE E PERSISTERE I DATI
INSERIMENTO DI DATI CON ADO.NET
Grazie al model binding nel form di inserimento del titolo quello che digita l’utente lo ritroviamo nella classe CourseCreateInputModel nel metodo Create di tipo HTTP POST di CoursesController.
Questo è il codice del metodo Insert di ADO.NET.
INSERIRE ENTITA’ CON ENTITY FRAMEWORK CORE
Anche in questo caso andremo ad inserire un corso con il modello a oggetti a cui siamo abituati. Nel momento in cui vogliamo aggiungere una riga usiamo il metodo Add(…) del DbContext creando una entità Course. Tuttavia, la riga non viene aggiunta immediatamente al database, ma l’entità viene messa temporaneamente in un organo interno il Change Tracker e viene marcata con Added.
È quando chiamiamo SaveChanges() che il DbContext va ad esaminare i contenuti del Change Tracker, vede che un’entità deve essere aggiunta, stabilisce una connessione con il Database e invia gli opportuni comandi SQL di Insert.
Quando l’entità è stata persistita si ritorna nel Change Tracker l’ID della proprietà Course viene aggiornata, e lo stato cambia da Added ad Unchanged.
Detached indica al DbContext di dimenticarsi di quell’entità, è come se non ci fosse mai finita nel Change Tracker.
Adesso andiamo a vedere il codice da inserire nel metodo.
Il DbContext può persistere più entità.
USARE IL MODEL STATE E LA DATA ANNOTATION PER VALIDARE L’INPUT
Non stiamo ancora controllando che il titolo digitato dall’utente sia valido. La sanitizzazione è un qualcosa che viene dopo la validazione, prima verifichiamo se questi dati sono non conformi alle regole, poi possiamo pulirli in modo che l’applicazione possa trattarli.
Se le colonne non avessero contenuto un valore del campo orderby valido su cui doveva essere fatto l’ordinamento saremmo andati a sanitizzare l’input dell’utente riassegnando le proprietà.
Vediamo le Data Annotation.
Incontriamo la nostra committente e stabiliamo insieme alcune regole di validazione.
Vediamo il codice con le regole di validazione.
LINK AL CODICE SU GITHUB
Scaricare il codice della sezione15 o clonare il repository GITHUB per avere a disposizione tutte le sezioni nel tuo editor preferito.
Scrivi un commento