Entity Framework - Model First Approach
In questo capitolo, impareremo come creare un modello di dati di entità nel designer utilizzando il flusso di lavoro denominato Model First.
- Model First è ottimo per quando si avvia un nuovo progetto in cui il database non esiste ancora. 
- Il modello è archiviato in un file EDMX e può essere visualizzato e modificato in Entity Framework Designer. 
- In Model First, definisci il tuo modello in un designer di Entity Framework, quindi generi SQL, che creerà lo schema del database per abbinare il tuo modello e quindi esegui l'SQL per creare lo schema nel tuo database. 
- Le classi con cui interagisci nell'applicazione vengono generate automaticamente dal file EDMX. 
Di seguito è riportato un semplice esempio di creazione di un nuovo progetto console utilizzando l'approccio Model First.
Step 1 - Apri Visual Studio e seleziona File → Nuovo → Progetto
 
                Step 2 - Seleziona Installato → Modelli → Visual C # → Windows dal riquadro di sinistra, quindi nel riquadro centrale, seleziona Applicazione console.
Step 3 - Inserisci EFModelFirstDemo nel campo Nome.
Step 4 - Per creare il modello, fai prima clic con il pulsante destro del mouse sul progetto della console in Esplora soluzioni e seleziona Aggiungi → Nuovi elementi ...
 
                Si aprirà la seguente finestra di dialogo.
 
                Step 5 - Selezionare ADO.NET Entity Data Model dal riquadro centrale e immettere il nome ModelFirstDemoDB nel campo Nome.
Step 6 - Fare clic sul pulsante Aggiungi che avvierà la finestra di dialogo Creazione guidata modello di dati entità.
 
                Step 7- Seleziona il modello EF Designer vuoto e fai clic sul pulsante Avanti. Entity Framework Designer si apre con un modello vuoto. Ora possiamo iniziare ad aggiungere entità, proprietà e associazioni al modello.
Step 8- Fare clic con il pulsante destro del mouse sulla superficie del progetto e selezionare Proprietà. Nella finestra Proprietà, modifica il nome del contenitore dell'entità in ModelFirstDemoDBContext.
 
                Step 9 - Fare clic con il pulsante destro del mouse sull'area di progettazione e selezionare Aggiungi nuovo → Entità ...
 
                La finestra di dialogo Aggiungi entità si aprirà come mostrato nell'immagine seguente.
 
                Step 10 - Immettere Student come nome entità e Student Id come nome proprietà e fare clic su Ok.
 
                Step 11 - Fare clic con il pulsante destro del mouse sulla nuova entità nell'area di progettazione e selezionare Aggiungi nuovo → Proprietà scalare, immettere Nome come nome della proprietà.
 
                Step 12 - Immettere FirstName e quindi aggiungere altre due proprietà scalari come LastName e EnrollmentDate.
 
                Step 13 - Aggiungi altre due entità Corso e Iscrizione seguendo tutti i passaggi sopra menzionati e aggiungi anche alcune proprietà scalari come mostrato nei passaggi seguenti.
 
                Step 14 - Abbiamo tre entità in Visual Designer, aggiungiamo qualche associazione o relazione tra di loro.
Step 15 - Fare clic con il pulsante destro del mouse sull'area di progettazione e selezionare Aggiungi nuovo → Associazione ...
 
                Step 16 - Fare in modo che un'estremità della relazione punti allo studente con una molteplicità di uno e l'altra estremità all'iscrizione con una molteplicità di molti.
 
                Step 17 - Ciò significa che uno studente ha molte iscrizioni e l'iscrizione appartiene a uno studente.
Step 18 - Assicurati che la casella Aggiungi proprietà chiave esterna all'entità "Post" sia selezionata e fai clic su OK.
Step 19 - Allo stesso modo, aggiungi un'altra associazione tra Corso e Iscrizione.
 
                Step 20 - Il tuo modello di dati sarà simile alla schermata seguente dopo aver aggiunto associazioni tra entità.
 
                Ora abbiamo un semplice modello da cui possiamo generare un database e utilizzarlo per leggere e scrivere dati. Andiamo avanti e generiamo il database.
Step 1 - Fare clic con il pulsante destro del mouse sull'area di progettazione e selezionare Genera database da modello ...
 
                Step 2 - È possibile selezionare il database esistente o creare una nuova connessione facendo clic su Nuova connessione ...
 
                Step 3 - Per creare un nuovo database, fare clic su Nuova connessione ...
 
                Step 4 - Immettere il nome del server e il nome del database.
 
                Step 5 - Fare clic su Avanti.
 
                Step 6- Fare clic su Fine. Questo aggiungerà il file * .edmx.sql nel progetto. È possibile eseguire script DDL in Visual Studio aprendo il file .sql, quindi fare clic con il pulsante destro del mouse e selezionare Esegui.
 
                Step 7 - Verrà visualizzata la seguente finestra di dialogo per connettersi al database.
 
                Step 8 - In caso di esecuzione riuscita, vedrai il seguente messaggio.
 
                Step 9 - Vai al server explorer, vedrai che il database viene creato con tre tabelle specificate.
 
                Successivamente, dobbiamo scambiare il nostro modello per generare codice che utilizza l'API DbContext.
Step 1 - Fai clic con il pulsante destro del mouse su un punto vuoto del tuo modello in EF Designer e seleziona Aggiungi elemento per la generazione del codice ...
 
                Vedrai che si apre la seguente finestra di dialogo Aggiungi nuovo elemento.
 
                Step 2 - Seleziona EF 6.x DbContext Generator nel riquadro centrale e inserisci ModelFirstDemoModel nel campo Nome.
Step 3 - Vedrai in Esplora soluzioni che vengono generati modelli ModelFirstDemoModel.Context.tt e ModelFirstDemoModel.tt.
 
                ModelFirstDemoModel.Context genera il DbCcontext e i set di oggetti che puoi restituire e utilizzare per le query, ad esempio per il contesto, Studenti e Corsi ecc.
L'altro modello si occupa di tutti i tipi Studente, Corsi ecc. Di seguito è riportata la classe Studente, che viene generata automaticamente dal Modello di entità.
 
                Di seguito è riportato il codice C # in cui vengono immessi e recuperati alcuni dati dal database.
using System;
using System.Linq;
namespace EFModelFirstDemo {
   class Program {
      static void Main(string[] args) {
         using (var db = new ModelFirstDemoDBContext()) {
            // Create and save a new Student
            Console.Write("Enter a name for a new Student: ");
            var firstName = Console.ReadLine();
            var student = new Student {
               StudentID = 1,
               FirstName = firstName
            };
				
            db.Students.Add(student);
            db.SaveChanges();
				
            var query = from b in db.Students
               orderby b.FirstName select b;
            Console.WriteLine("All student in the database:");
            foreach (var item in query) {
               Console.WriteLine(item.FirstName);
            }
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
         }
      }
   }
}Quando il codice sopra viene eseguito, riceverai il seguente output:
Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...Ti consigliamo di eseguire l'esempio precedente in modo graduale per una migliore comprensione.