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.


Mais impressões SubSonic 3.0

É, pelo visto tem mais gente “desgostando” da nova versão do SubSonic, a 3.0. Resumo a antiga versão 2.0 como “show de bola”, fácil de implementar e rápida.

Veja abaixo um link de um blog americano analisando o subsonic 3. Ele enfrentou o mesmo problema que eu: trabalhava com a versão 2 em vários projetos e não consegue substituir pela nova.

Clique aqui para acessar o Jim Blog.


SubSonic 3.0 – retorno IQueryable não suporta paginação em GridView

É isto mesmo. Se você criar um método para preencher um gridview, sendo que o retorno do método seja IQueryable, será gerado um erro informando que a fonte de dados não possui suporte à paginação. Isso é um saco. Para contornar, você pode trocar o tipo de retorno para IEnumerable (namespace System.Collections). No final do método chame o ToList. Veja um exemplo:

public static IEnumerable GetAll()
{
return Centro.All().ToList();
}.

Lembre-se: se gostou comente, se não gostou deixa a crítica.


Impressões SubSonic 3.0 – Sem Serializable no ViewState

Analisando a mais recente versão do SubSonic, a 3.0.3, posso dizer até que gostei, principalmente porque utiliza Linq. Entretanto, no lab que fiz para avaliar a framework tive de cara um problema sério: não consegui armazenar no ViewState um objeto que instanciei de uma classe qualquer. Não há Serializable nos T4 e tentei customizar isso na mão, rapidamente, sem perder muito tempo (até porque não o tenho). Infelizmente não consegui. Esse detalhe pode fazer muita diferença.