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.