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.