OpenAccess ORM

OpenAcess ORM stworzony przez Telerika jest kolejnym po Entity Framework i NHibernate systemem ORM dla .NET. OpenAccess jest rozbudowaną aplikacją, ale w tym wpisie ograniczę się tylko na podejściu ‚code first’, czyli najpierw piszemy kod a baza zostanie wygenerowana automatycznie. Stworzę podobny przykład jak we wpisie Entity Framework i PostgreSQL.

Konfigurcja

Zaczynamy od stworzenia aplikacji konsolowej:

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

Instalujemy potrzebne pakiety, czyli OpenAccess.CodeFirst:

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

Dostępny jest jeszcze pakiet OpenAccess.CodeFirst.Sample, który zawiera przykładowy model i mapowanie. Nie jest on potrzebny do przykładów z tego wpisu, ale warto się z nim zapoznać.

Dodajemy do pliku app.config konfigurację Npgsql i connectionString — powinny się znaleźć w obrębie elementu configuration:

Model

Tworzymy klasy Author i Book:

Mapowanie

Użyjemy mechanizmu ‚default mapping’, który automatycznie wygeneruje nam mapowanie między zmiennymi a kolumnami. W przypadku, gdy chcielibyśmy samodzielnie określić mapowanie zmiennych na kolumny powinniśmy użyć ‚explicit mapping’ opisanego w dokumentacji. Sposób mapowania definiujemy w klasie dziedziczącej po FluentMetadataSource przez nadpisanie funkcji PrepareMapping():

Linia 8 – mapowanie typu Author do tabeli „Authors”
Linia 9 – użyj pola AuthorId jako identyfikatora
Linia 15 – ustawia powiązanie do tabeli „Authors”

Sposób użycia

Zaczynamy od zdefiniowania swojego kontekstu, gdzie ustawimy połączenie do bazy danych, mapowanie i konfigurujemy backend:

Linia 3 – pobieramy nasz model
Linia 5 – odwołujemy się do definicji connectionString w pliku app.config
Linie 9-10 – ustawiamy poziom logowania na ‘Normal’ i wyświetlanie logów na konsoli

Dodajmy do tej klasy właściwości Authors i Books, które zwrócą nam obiekty na których będziemy mogli wykonać zapytania LINQ:

Stwórzmy również funkcję, która sprawdzi czy schemat bazy danych jest poprawny i zaktualizuje/stworzy schemat w razie potrzeby:

Korzystając z nowoutworzonego kontekstu dodajmy wpisy do bazy danych:

Ups! Zrobiliśmy błąd poprawmy go:

Gotowe 🙂

Podsumowanie

Telerik OpenAccess ORM jest bardzo fajną alternatywą dla Entity Framework i NHibernate. Przynajmniej porównując podejście ‘code first’. Pisząc powyższy przykład nie czułem, żeby mi brakowało jakichś funkcjonalności. Nie znalazłem też niczego irytującego. Pierwsze wrażenie jak najbardziej pozytywne – OpenAccess sprawia wrażenie produktu dobrze przemyślanego i dopracowanego.

OpenAccess ma również bardzo dobrą dokumentację, co tym bardziej doceniam po ostatnich próbach z NHibernate.Mapping.Attributes. Odpowiedzi na wszystkie wątpliwości znalazłem w oficjalnej dokumentacji.

Moim zdaniem jest to warta zainteresowania i wypróbowania alternatywa.


Comments are closed.