Ich lese gerade über persistente Objekte in .net. Daher kann ich keine Best Practice anbieten, aber vielleicht können meine Einsichten Ihnen etwas bringen. Bis vor ein paar Monaten habe ich immer handcodierte Abfragen verwendet, eine schlechte Angewohnheit aus meinen ASP.classic Tagen.
Linq2SQL - Sehr leicht und einfach auf Geschwindigkeit zu bringen. Ich mag die stark typisierten Abfragemöglichkeiten und die Tatsache, dass SQL nicht auf einmal ausgeführt wird. Stattdessen wird es ausgeführt, wenn Ihre Abfrage bereit ist (alle angewendeten Filter), sodass Sie den Datenzugriff von der Filterung der Daten trennen können. Mit Linq2SQL kann ich auch Domänenobjekte verwenden, die von den Datenobjekten, die dynamisch generiert werden, getrennt sind. Ich habe Linq2SQL nicht in einem größeren Projekt ausprobiert, aber bisher scheint es vielversprechend. Oh, es unterstützt nur MS SQL, was eine Schande ist.
Entity Framework - Ich spielte ein bisschen herum und mochte es nicht. Es scheint alles für mich tun zu wollen und es funktioniert nicht gut mit gespeicherten Prozeduren. EF unterstützt Linq2Entities, was wiederum stark typisierte Abfragen erlaubt. Ich denke, dass es auf MS SQL beschränkt ist, aber ich könnte falsch liegen.
SubSonic 3.0 (Alpha) - Dies ist eine neuere Version von SubSonic, die Linq unterstützt. Das Tolle an SubSonic ist, dass es auf Vorlagendateien (T4-Vorlagen, in C# geschrieben) basiert, die Sie leicht ändern können. Wenn Sie möchten, dass der automatisch generierte Code anders aussieht, ändern Sie ihn einfach :). Ich habe bisher nur eine Vorschau versucht, werde aber heute das Alpha betrachten. Schau mal hier SubSonic 3 Alpha. Unterstützt MS SQL, unterstützt aber bald Oracle, MySql usw.
Bis jetzt ist meine Schlussfolgerung, Linq2SQL zu benutzen, bis SubSonic bereit ist und dann zu diesem zu wechseln, da SubSonics Vorlagen viel mehr Anpassung erlaubt.
Re: EF beschränkt sich auf MS SQL - out of the box - ja, aber es gibt 3rd Party Partner, die Provider für andere RDBMS entwickeln. Wenn Sie zum Beispiel ORACLE möchten, dann hat eine Firma namens DevArt sowohl einen EF-Provider für ORACLE als auch eine LINQ-ORACLE-Implementierung. – rohancragg