Aktualnie czytam uporczywe obiekty w .net. W związku z tym nie mogę zaoferować najlepszej praktyki, ale może moje spostrzeżenia mogą przynieść ci jakąś korzyść. Aż do kilku miesięcy temu zawsze używałem handcoded zapytań, złego nawyku z moich dni ASP.classic.
Linq2SQL - Bardzo lekki i łatwy do uzyskania. Uwielbiam mocno wpisane możliwości sprawdzania i fakt, że SQL nie jest uruchamiany od razu. Zamiast tego jest wykonywany, gdy zapytanie jest gotowe (wszystkie zastosowane filtry), dzięki czemu można podzielić dostęp do danych z filtrowania danych. Również Linq2SQL pozwala mi używać obiektów domen, które są oddzielne od obiektów danych, które są generowane dynamicznie. Nie próbowałem Linq2SQL na większym projekcie, ale jak dotąd wydaje się to obiecujące. Oh, obsługuje tylko MS SQL, co jest wstydem.
Entity Framework - Grałem z nim trochę i nie lubiłem tego. Wydaje się, że chce zrobić wszystko dla mnie i nie działa dobrze z procedurami przechowywanymi. EF obsługuje Linq2Entities, która ponownie pozwala na silnie typowane zapytania. Myślę, że jest to ograniczone do MS SQL, ale mogę się mylić.
SubSonic 3.0 (Alpha) - Jest to nowsza wersja SubSonic, która obsługuje Linq. Fajną cechą SubSonic jest to, że bazuje na plikach szablonów (szablony T4, napisane w C#), które można łatwo modyfikować. Dlatego jeśli chcesz, aby wygenerowany automatycznie kod wyglądał inaczej, po prostu go zmień :). Próbowałem do tej pory tylko podglądu, ale dzisiaj spojrzę na Alphę. Zajrzyj tutaj SubSonic 3 Alpha. Obsługuje MS SQL, ale wkrótce będzie obsługiwał Oracle, MySQL itp.
Dotychczas moja konkluzja jest użycie linq2sql aż SubSonic jest gotowy, a następnie przełączyć się, że od SubSonics szablonów pozwala na znacznie więcej dostosowanie.
Re: EF jest ograniczone do MS SQL - gotowe - tak, ale istnieją zewnętrzni partnerzy rozwijający dostawców dla innych RDBMS. Jeśli na przykład chcesz ORACLE, firma DevArt ma zarówno dostawcę EF dla ORACLE, jak i implementację LINQ-to-ORACLE. – rohancragg