Entity Framework i podejście code-first w ASP.NET MVC – pierwsze kroki


4 kwietnia 2017 / Michał Kortas


W dzisiejszym wpisie chciałbym przedstawić Ci podejście code-first, z wykorzystaniem Entity Framework. Jest to bardzo prosty i przyjemny sposób projektowania logiki aplikacji oraz powiązanej z nią struktury bazy danych. Możliwości, jaki daje to podejście wykorzystuję w projekcie todo.team. Temat ten podzieliłem na trzy osobne posty. Dzisiaj opowiem Ci o tworzeniu encji, konfiguracji EF i uruchomieniu pierwszej migracji. Drugi wpis (przewidziany na przyszły wtorek) opisywał będzie budowanie relacji pomiędzy tabelami bazy. Trzeci natomiast zawierał będzie informacje o tym, jak z przygotowanych encji stworzyć obsługujące je widoki i nałożyć na pola encji specjalne ograniczenia i wymagania co do przyjmowanych przez nie wartości. Zapraszam do lektury.

Instalacja Entity Framework

Korzystając z konsoli menadżera pakietów NuGet, zainstaluję teraz w projekcie platformę EntityFramework.

Instalacja EntityFramework za pomocą NuGet

Instalacja EntityFramework za pomocą NuGet

Tworzenie modelu domeny

Struktura bazy będzie odwzorowywać encje użyte w projekcie. Załóżmy, że aplikacja posiadać będzie dwa takie podstawowe elementy: Student i Przedmiot.

Każdy Student będzie mógł być opisany następującymi atrybutami:

  • imię,
  • nazwisko,
  • rocznik,
  • płeć,
  • pesel.

Jak się pewnie domyślasz, encja Student będzie automatycznie przetwarzana na tabelę SQL, która posiadać będzie wyżej wymienione kolumny. Proste?

Stworzę zatem jeszcze jedną encję – Przedmiot:

  • nazwa,
  • godziny,
  • obowiązkowy.

No dobrze. Skoro już wiem, jakich tabel dokładnie potrzebuję, przyszedł czas na stworzenie odpowiadających im klas. Dla studenta kod klasy będzie taki:

A co z Przedmiotem?

Studentowi zostawiłem same pola tekstowe, natomiast Przedmiot oprócz pola tekstowego zawiera jedno pole liczbowe oraz kolumnę przechowująca wartość logiczną (true/false). Każde pola mogą mieć nałożone różnego rodzaju ograniczenia lub wymagania. Opiszę to w trzecim, piątkowym artykule. Dzisiaj wykorzystam jednak adnotację [key], która opisuje pola id jako klucz główny tabel, które zostaną stworzone w kolejnych punktach. Skoro encje są gotowe, przejdę krok dalej.

Tworzenie kontekstu Entity Framework

Teraz należy przygotować mapowanie stworzonego modelu aplikacji z bazą danych. W tym celu założę nowy katalog o nazwie Concrete, a w nim plik EfDbContext.cs z następującą zawartością.

Od tej pory, wszelkie zmiany w budowie encji oraz samo ich istnienie będą kojarzone ze strukturą bazy danych.

Tworzenie bazy danych

Przejdę szybko do Eksploratora serwera i stworzę nową, pustą bazę danych za pomocą funkcji „Łączenie z bazą danych”.

Parametry tworzenia nowej bazy danych

Parametry tworzenia nowej bazy danych

Podłączanie bazy danych

Nie łączyłem jeszcze aplikacji z bazą. Jedyną zmianą, którą muszę teraz wprowadzić, jest aktualizacja tzw. connectionString na taki, który będzie współpracował z Entity Framework. Zrobię to w pliku Web.config.

Tworzenie migracji

Teraz, aby automatycznie stworzyć strukturę nowej bazy danych muszę wygenerować nową migrację. Znowu skorzystam z konsoli menadżera pakietów NuGet. Właśnie taką przewagę daje podejście code-first. Bez znajomości SQL jesteś w stanie przygotować całą zawartość bazy, z którą będzie łączyła się Twoja aplikacja.

Jeśli to nowy projekt, będzie konieczne włączenie obsługi migracji.

Polecenie to wygenerowało dodatkowy katalog w rozwiązaniu.

Wygenerowany katalog i konfiguracja migracji

Wygenerowany katalog i konfiguracja migracji

Jeśli obsługa migracji została włączona, mogę spokojnie wywołać polecenie stworzenia nowej migracji.

Ostatni człon to nazwa migracji. Możesz wpisać swoją.

Zajrzyj do katalogu Migrations. Powstały w nim nowe pliki, które opisują tabele bazy danych, która zostanie zaraz stworzona.

Aktualizacja bazy danych

Nadszedł czas na ostateczny cios. Tym razem w NuGet zlecę aktualizację bazy danych.

Poszło! Nie tworzyłem nic ręcznie, a w menadżerze bazy widzę taki oto efekt.

Automatycznie wygenerowana struktura tabel

Automatycznie wygenerowana struktura tabel

Podsumowanie

Na dzisiaj to tyle. Wiesz już, jak wykorzystać podejście code-first, która znacznie przyśpiesza i ułatwia pisanie aplikacji. Dzięki powyższym czynnościom możesz skupić się na programowaniu, a nie na zabawach z SQLem. W przyszły wtorek zaprezentuje relacje pomiędzy tabelami, natomiast w kolejny pokażę, jak ograniczać wartości w kolumnach do wybranych przez siebie parametrów.

Kolejny wpis z serii: Entity Framework i podejście code-first w ASP.NET MVC – relacje

Grafika główna pochodzi z tego kanału.


Tagi:


2 odpowiedzi na “Entity Framework i podejście code-first w ASP.NET MVC – pierwsze kroki”

  1. Krzysiek pisze:

    Czekam na więcej. Myślę, że uporządkuję sobie wiedzę z EF dzięki Twoim wpisom. Pozdrawiam! ;)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *