Moje przygody z Subsonic

Subsonic jest kolejnym narzędziem ORM stworzonym z myślą o .NET. Ostatnio było dosyć głośno o nim po tym jak Microsoft zdecydował się zatrudnić(zasymilować 😉 ) jego twórcę a samego Subsonica dołączyć do swojej implementacji MVC.

W opisie i na screencastach, których na stronie projektu można znaleĽć bardzo dużo, wszystko wygląda wspaniale. Lecz jak zwykle diabeł tkwi w szczegółach:

  • brak wsparcia dla dziedziczenia, tzn.: nie można stworzyć tabeli odwzorowującej klasę podstawową a następnie podłączyć do niej dziedziczącą; trochę to utrudnia budowanie struktury danych, ale można to obejść za pomocą widoków i triggerów instead of, czy jest to ładne? mam wątpliwości
  • relacje wiele do wielu – generator kodu tworzy niespecjalnie ładne klasy odpowiadające tabelom mapującym, o ile pamiętam w monorail( działa na nhibernate) zrobione to było rozsądniej
  • brak rozsądnej dokumentacji – screencasty są może dobrą formą prezentacji, jednak nie zastąpią pisemnej dokumentacji, która można przeglądać w czasie pisania
  • generator kodu sonic.exe / subcommander – pozwala wygenerować kod klas, ale jest bardzo trudny w użyciu, dobre wyniki udało mi się osiągnąć dopiero, gdy sprawdziłem kod Ľródłowy

Oczywiście są też niezaprzeczalne plusy:

  • Subsonic został stworzony w pierwszej kolejności dla aplikacji webowych i tutaj doskonale zdaje egzamin
  • dla prostych struktur danych pozwala bardzo szybko przełożyć strukturę danych na strukturę obiektową
  • mały rozmiar
  • dosyć szybko działa i mało obciąża maszynę

Zdecydować oczywiście trzeba samemu…