Creazione nuovi progetti
MVC personalizzato
Di seguito le variazioni del Framework MVC standard di Microsoft.
-
Creazione del Modello.
- Il modello deve ereditare dall'interfaccia IInCoreBaseModel.
- Il modello deve implementare l'Attributo Table, anche se il nome della tabella coincide con quello del modello, per chiarezza.
-
Oltre ai normali attributi disponibili in MVC, il modello
può includere gli attributi specifici di InCore:
- InCoreRequired: Scorciatoia per il normale [Required], con la traduzione del messaggio in italiano.
- InCoreEmailAddress: Annotazione equivalente a [EmailAddress], modificata per verificare le email tramite una espressione regolare.
- InCoreCompare: Scorciatoia per il normale [Compare], con la traduzione del messaggio in italiano.
-
EarlierThan: Annotazione personalizzata, consente di specificare
che un parametro deve essere precedente a un altro (di un certo
tempo misurato in ore e minuti).
Parametri:- ComparisonProperty: stringa, nome del parametro con cui confrontare quello a cui è applicato l'attributo.
- Minutes: intero, opzionale, numero di minuti di differenza, default 0.
- Hours: intero, opzionale, numero di ore di differenza, default 0.
-
LaterThan: Annotazione personalizzata, consente di specificare
che un parametro deve essere successivo a un altro (di un certo
tempo misurato in ore e minuti).
Parametri:- ComparisonProperty: stringa, nome del parametro con cui confrontare quello a cui è applicato l'attributo.
- Minutes: intero, opzionale, numero di minuti di differenza, default 0.
- Hours: intero, opzionale, numero di ore di differenza, default 0.
-
InCoreMin: Annotazione personalizzata, consente di specificare
che il valore decorato deve essere maggiore del valore fornito.
Parametri:- Value: object, valore minimo consentito.
- Type: System.TypeCode enum, tipologia del dato.
-
InCoreMax: Annotazione personalizzata, consente di specificare
che il valore decorato deve essere minore del valore fornito.
Parametri:- Value: object, valore massimo consentito.
- Type: System.TypeCode enum, tipologia del dato.
- Aggiungere il Modello a MyDbContext come DbSet<NomeModello>
-
Modello di una Vista.
-
Seguire i passaggi definiti precedentemente a parte per le seguenti operazioni:
- Omettere l'Attributo Table.
- [OPZIONALE] Definizione del Modello con l'Attributo Keyless se la Vista non possiede una chiave primaria.
-
All'interno di MyDbContext, nel metodo OnModelCreating, aggiungere la
seguente istruzione:
modelBuilder.Entity<CLASSE>(rc => { rc.HasNoKey(); rc.ToView("NOME_VISTA"); });
-
Seguire i passaggi definiti precedentemente a parte per le seguenti operazioni:
-
Generazione automatica del Controller (e delle View) a partire dal Modello.
- Cliccare di destro sulla cartella Controllers e richiamare il comando Aggiungi --> Nuovo elemento di scaffolding...
- Selezionare l'opzione Controller MVC con visualizzazioni, che usa Entity Framework.
-
Nella nuova finestra,
- Selezionare il Modello dal menù a tendina
- Selezionare il MyDbContext, se non specificato
- Lasciare selezionate tutte le 3 spunte
- [OPZIONALE] Impostare _ModalLayout nella casella di testo per prepararsi all'uso delle Modali
- Modificare il nome del Controller, per evitare il plurale "all'inglese"
-
Modifiche ai Controller.
-
Far derivare il Controller da uno dei Controller standard presenti nel progetto:
- MyContextController: Controller base per tutte le entità che usano MyDbContext.
- MyCalendarController: Controller base per la gestione di entità Calendario.
- MyFileController: Controller base per la gestione di entità di tipo File.
- MyApiController: Controller base per la gestione delle API
- Utilizzare il costruttore di default dei Controller base, passando i parametri necessari.
- Rimuovere la variabile privata del DbContext, già presente nel Controller base.
- Sostituire le istanze di _dbContext con DbContext
- Creazione del metodo Get() contenente la lettura dell'intera tabella come IEnumerable<TIPO>, contenente tutte le Include necessarie per le Foreign Key.
-
Far derivare il Controller da uno dei Controller standard presenti nel progetto:
-
Modifiche alle Viste.
- Modificare o aggiungere un Layout alle Viste.
-
Modificare i form-group con i form-floating, impostando prima gli input delle label.
Verificare la Vista /Home/Index_Empty per gli esempi di codice corretto per i vari tipi di input.
-
Aggiunta al Database.
- Aprire Visualizza -> Altre finestre -> Console di Gestione Pacchetti
-
Utilizzare il comando seguente nella Console appena aperta per aggiungere le Migrazione:
Add-Migration -Context MyDbContext "DESCRIZIONE DELLA MIGRATION"
-
Una volta generata correttamente la Migration, eseguire il seguente comando per scrivere le modifiche su DB:
Update-Database -Context MyDbContext