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.