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…