SubSonic vs LinqToSql vs Entity FrameWork

Programar hoje em dia sem usar um confiável e produtivo framework de persistência é estar em desvantagem competitiva, num mercado veloz. Escolher a frame correta não é uma decisão fácil: exige pesquisa, muito estudo e persistência (às vezes é um verdadeiro jogo de paciência). Existem ótimas opções pagas, mas elas são “pagas”. Então vamos pensar nas free. No título deste post apresento 3 opções. De cara aconselho o seguinte: para quem pretende adotar uma framework de persistência, não recomendo o velho e bom SubSonic 2.0, porque ele já é velho (o irmão mais novo é a versão 3) e,com certeza, problemas de incompatibilidades virão com as novas versão do Visual Studio, o que pode comprometer a evolução tecnológica do seu sistema.

SubSonic 3
Desta forma, resta a versão 3. Conheço, e bem a versão 2, e também testei bastante a 3. Minha avaliação: não use. Recursos básicos deixaram de existir (não sei o porquê) e outros recursos básicos estão com bug. O maior problema, ao meu ver, é que esta é uma frame de um homem só. O autor do produto já declarou não dar garantias de suporte.

LinqToSql
Para a versão 2008 do Visual Studio, sem dúvida alguma, o LinqToSql dá uma surra no EF (Entity FrameWork), apesar de muita gente odiar o L2S porque ele só serve para o SQL Server (até rimou). O L2S é fácil, funcional, mas, apesar de ser a melhor escolha para o Visual Studio 2008, ele tem problemas sérios: serializar um objeto para armazenar em view state, por exemplo, não é moleza, apesar de existirem classes feitas pela comunidade para tratar isso, ou, ainda, apesar dos recursos de serialização via XML, o negócio é trabalhoso. Outro detalhe: um objeto criado num contexto continuo preso a ele e você dificilmente consegue levar esse objeto para trabalhar num contexto diferente. Minha opinião: não use, a Microsoft não está investindo tanto como devia, inclusive tenho comprovado isso na versão 2010 do Visual Studio – pouca evolução, coisas básicas não foram resolvidas.

Entity Framework
Esta é a minha escolha e meu conselho para quem vai trabalhar com a versão 2010 do VS. Na 2008 não, jamais. Serializar um objeto em viewstate é fácil, moleza, não precisa fazer nada, é só usar. A FKs estão disponíveis para uso, o que evita usar apenas os objetos de referência, o que acarretava em mais idas e vindas do banco. O sql gerado está de fato mais limpo, apesar do EF ainda fazer left join onde deveria ser um inner, mas tem como contornar isso.

Minhas recomendações estão baseadas na nova versão do VS.