Entity Framework i PostgreSQL

Nie znalazłem nigdzie opisu po polsku jak używać Entity Framework z PostgreSQL, postanowiłem opisać moje próby. W dużej części ten opis bazuje na anglojęzycznym opisie Brice’a Lambsona „Entity Framework on PostgreSQL”.

Do połączenia PostgreSQL z Entity Frameworkiem użyjemy data providera Npgsql. Niestety nie wspiera on tworzenia bazy, musimy ją stworzyć ręcznie. Z kronikarskiego obowiązku muszę też wspomnieć, że istnieje jeszcze jeden data provider dla Postgresql – Devart dotConnect for PostgreSQL jest to produkt komercyjny i wydaje się bardziej rozbudowany niż Npgsql.

Do przykładów stworzyłem dwie tabele:

Mamy już przygotowaną bazę, z którą będziemy się łączyć.

Tworzymy aplikację

W przykładach użyjemy aplikacji konsolowej.

  1. Otwórz Visual Studio
  2. Wybierz File -> New -> Project…
  3. Wybierz Console Application
  4. Nazwij projekt
  5. Wciśnij OK

Zainstaluj Entity Framework i Npgsql

Korzystając z dobrodziejstwa NuGeta doinstaluj Entity Framework i Npgsql.

W Visual Studio Express 2012:

  1. Wybierz Tools -> Library Package Manager -> Manage NuGet Packages for Solution…
  2. Wyszukaj Entity Framework
  3. Zaznacz na liście znalezionych
  4. Wciśnij Install

Powtórz te kroki dla Npgsql.

Skonfiguruj aplikację

Musimy zarejestrować data providera czyli w naszym przypadku Npgsql oraz dodać konfigurację połączenia do naszej bazy danych (connection string). Dodaj do pliku app.config (w dowolne miejsce w obrębie elementu configuration) poniższy fragment.

Zwróć uwagę na linię 11. Zdefiniowana jest tam nazwa połączenia będziemy jej potrzebować później.

Tworzymy Model

Mając przygotowane środowisko możemy przejść do implementacji.

Stwórz klasy Author  i  Book

Stwórz  klasę LibraryContext, zwróć uwagę, że powinna się nazywać tak jak zostało nazwane połączenie do bazy danych, czyli LibraryContext.

Sposób użycia

Mamy już wszystko przygotowane, spróbujmy więc tego użyć.

Zacznijmy od dodania jakiejś książki, dodaj do pliku Program.cs do funkcji Main następujący kod:

Sprawdźmy jakie książki są w bazie:

Ups! Diunę napisał Frank Herbert nie Brian… Naprawmy to:

Teraz już jest OK. 🙂

Kod źródłowy do tego przykładu jest dostępny tutaj.


Comments are closed.