Entity Framework - pierwsze podejście modelu
W tym rozdziale nauczymy się, jak utworzyć model danych encji w projektancie przy użyciu przepływu pracy określanego jako Model First.
Model First jest świetny, gdy zaczynasz nowy projekt, w którym baza danych jeszcze nie istnieje.
Model jest przechowywany w pliku EDMX i można go wyświetlać i edytować w Entity Framework Designer.
W Model First definiujesz model w projektancie Entity Framework, a następnie generujesz kod SQL, który utworzy schemat bazy danych pasujący do modelu, a następnie wykonujesz kod SQL w celu utworzenia schematu w bazie danych.
Klasy, z którymi współdziałasz w aplikacji, są automatycznie generowane z pliku EDMX.
Poniżej znajduje się prosty przykład tworzenia nowego projektu konsoli przy użyciu podejścia Model First.
Step 1 - Otwórz program Visual Studio i wybierz opcję Plik → Nowy → Projekt
Step 2 - Wybierz Zainstalowane → Szablony → Visual C # → Windows z lewego panelu, a następnie w środkowym panelu wybierz aplikację konsolową.
Step 3 - Wpisz EFModelFirstDemo w polu Nazwa.
Step 4 - Aby utworzyć model, najpierw kliknij prawym przyciskiem myszy projekt konsoli w eksploratorze rozwiązań i wybierz opcję Dodaj → Nowe elementy…
Otworzy się następujące okno dialogowe.
Step 5 - Wybierz model danych jednostki ADO.NET ze środkowego panelu i wprowadź nazwę ModelFirstDemoDB w polu Nazwa.
Step 6 - Kliknij przycisk Dodaj, co spowoduje uruchomienie okna dialogowego Entity Data Model Wizard.
Step 7- Wybierz pusty model EF Designer i kliknij przycisk Dalej. Entity Framework Designer zostanie otwarty z pustym modelem. Teraz możemy zacząć dodawać encje, właściwości i skojarzenia do modelu.
Step 8- Kliknij prawym przyciskiem myszy powierzchnię projektową i wybierz Właściwości. W oknie Właściwości zmień nazwę kontenera jednostki na ModelFirstDemoDBContext.
Step 9 - Kliknij prawym przyciskiem myszy powierzchnię projektową i wybierz Dodaj nowy → Jednostka…
Otworzy się okno dialogowe Dodaj jednostkę, jak pokazano na poniższym obrazku.
Step 10 - Wprowadź Student jako nazwę jednostki i ID Studenta jako nazwę właściwości i kliknij OK.
Step 11 - Kliknij prawym przyciskiem myszy nowy element na powierzchni projektowej i wybierz opcję Dodaj nowy → Właściwość skalarna, wprowadź nazwę jako nazwę właściwości.
Step 12 - Wprowadź FirstName, a następnie dodaj kolejne dwie właściwości skalarne, takie jak LastName i EnrollmentDate.
Step 13 - Dodaj dwa kolejne kursy i rejestrację jednostek, wykonując wszystkie kroki wymienione powyżej, a także dodaj niektóre właściwości skalarne, jak pokazano w poniższych krokach.
Step 14 - Mamy trzy encje w programie Visual Designer, dodajmy jakieś skojarzenia lub relacje między nimi.
Step 15 - Kliknij prawym przyciskiem myszy powierzchnię projektową i wybierz Dodaj nowy → Skojarzenie…
Step 16 - Skieruj jeden koniec relacji na Ucznia z wieloma jednym, a drugi koniec na Zapisanie się z wieloma wieloma.
Step 17 - Oznacza to, że uczeń ma wiele zapisów i zapis należy do jednego ucznia.
Step 18 - Upewnij się, że pole wyboru Dodaj właściwości klucza obcego do jednostki „Opublikuj” jest zaznaczone i kliknij przycisk OK.
Step 19 - Podobnie dodaj jeszcze jedno powiązanie między kursem a rejestracją.
Step 20 - Twój model danych będzie wyglądał jak na poniższym ekranie po dodaniu powiązań między jednostkami.
Mamy teraz prosty model, z którego możemy wygenerować bazę danych i używać jej do odczytu i zapisu danych. Przejdźmy dalej i wygenerujmy bazę danych.
Step 1 - Kliknij prawym przyciskiem myszy powierzchnię projektową i wybierz opcję Generuj bazę danych z modelu…
Step 2 - Możesz wybrać istniejącą bazę danych lub utworzyć nowe połączenie, klikając Nowe połączenie…
Step 3 - Aby utworzyć nową bazę danych, kliknij Nowe połączenie…
Step 4 - Wprowadź nazwę serwera i nazwę bazy danych.
Step 5 - Kliknij Dalej.
Step 6- Kliknij Zakończ. Spowoduje to dodanie pliku * .edmx.sql do projektu. Skrypty DDL można uruchamiać w programie Visual Studio, otwierając plik .sql, a następnie klikając prawym przyciskiem myszy i wybierając polecenie Wykonaj.
Step 7 - Zostanie wyświetlone następujące okno dialogowe umożliwiające połączenie z bazą danych.
Step 8 - Po pomyślnym wykonaniu zostanie wyświetlony następujący komunikat.
Step 9 - Przejdź do eksploratora serwera, zobaczysz, że baza danych jest tworzona z trzema określonymi tabelami.
Następnie musimy zamienić nasz model, aby wygenerować kod korzystający z interfejsu API DbContext.
Step 1 - Kliknij prawym przyciskiem myszy puste miejsce modelu w programie EF Designer i wybierz opcję Dodaj element generowania kodu…
Zobaczysz, że otworzy się następujące okno dialogowe Dodaj nowy element.
Step 2 - Wybierz EF 6.x DbContext Generator w środkowym panelu i wprowadź ModelFirstDemoModel w polu Nazwa.
Step 3 - W eksploratorze rozwiązań zobaczysz, że są generowane szablony ModelFirstDemoModel.Context.tt i ModelFirstDemoModel.tt.
ModelFirstDemoModel.Context generuje DbCcontext i zestawy obiektów, które można zwracać i używać do wykonywania zapytań, np. Kontekstu, studentów i kursów itp.
Drugi szablon dotyczy wszystkich typów studentów, kursów itp. Poniżej znajduje się klasa studenta, która jest generowana automatycznie z modelu jednostki.
Poniżej znajduje się kod C #, w którym niektóre dane są wprowadzane i pobierane z bazy danych.
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();
}
}
}
}
Po wykonaniu powyższego kodu otrzymasz następujący wynik -
Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...
Zalecamy wykonanie powyższego przykładu krok po kroku w celu lepszego zrozumienia.