LINQ to SQL está morto?

17

Existe algum motivo para continuar usando o Linq to SQL ou é melhor mudar para técnicas ORM como EF, NHibernate etc.

Estamos usando o Linq to SQL em um novo aplicativo corporativo de grande porte que existirá por muito tempo. A motivação para esse novo aplicativo corporativo é que o aplicativo era comum escrito em Visual Basic e, como a Microsoft interrompeu o suporte, fomos forçados a reescrever o aplicativo. Parece que já estamos lá, mas desta vez com o nosso DAL (Data Access Layer).

Eu já li este artigo , mas ele se compara apenas à fraqueza da EF.

Amir Rezaei
fonte
+1 excelente Q. Isso é fascinante para mim, eu tenho pensado em mudar meus procedimentos armazenados e seqüências de caracteres de consulta SQL parametrizadas para LINQ para SQL para melhorar a legibilidade, não sabia que não estava mais sendo desenvolvido.
Fearoffours 12/11/10
A Microsoft tem um pequeno tipo de apresentação de slides do .NET 4 que diz que não está morta - mas isso pode significar muitas coisas. Eles o aprimoraram no .NET 4.0: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester
De novo não. Esta questão foi debatida ad-nauseum no StackOverflow. Você pode dizer FUD?
Robert Harvey

Respostas:

11

Se você já está usando e não encontra nenhuma dificuldade, eu continuaria com ele em projetos existentes.

O Linq2SQL é um ORM bastante agradável, mas limitado - se você deseja mapear seus objetos de maneiras mais complexas que as básicas fornecidas pelo Linq2SQL, ficará paralisado. A Microsoft corrigiu alguns bugs quando lançou o .net 4, mas afirmou que não vai dedicar recursos para estendê-lo.

Eu diria que se você tiver um projeto bastante simples que possivelmente tenha uma vida útil limitada, o Linq2SQL é uma escolha leve e decente, desde que você tome cuidado para não vazar dependências do Linq2SQL em todo o lugar. Para qualquer coisa mais, eu iria com outra coisa (NHibernate ou EF, por exemplo), pois o Linq2SQL é praticamente um beco sem saída.

FinnNk
fonte
Só posso concordar, não realmente morto, mas está na mesa da triagem de alguma forma. Se as coisas estão funcionando e é um enorme impacto alterá-las agora ... bem, você pode relaxar um pouco e procurar um bom momento para colocar a conversão no EF / NHibernate, pode ser um projeto de atualização financiada (no final, todos querem emprego, pão e manteiga na mesa).
cyberzed
@ cyberzed: Isso soa como uma boa desculpa para trabalhos desnecessários.
Robert Harvey
12

Não está morto, mas a Microsoft agora está focada no Entity Framework.

Eu usei o LINQ to SQL em pequenos projetos, e é muito bom como uma camada de dados leve e consideraria usá-lo novamente em projetos de tamanhos semelhantes. A implementação do LINQ em si é realmente boa e até recentemente muito melhor que o projeto LINQ do NHibernate. No projeto maior em que usei o L2S, achei difícil criar um padrão de unidade de trabalho que me agradava, devido a limitações na classe 'DataContext' do L2S. Tentar implementar algo como 'Sessão por solicitação' com L2S parece muito difícil ou impossível.

Eu também não consideraria o L2S como um ORM verdadeiro, pois realmente não oferece muitas opções de mapeamento. Seu design de classe realmente precisa seguir o esquema do banco de dados (tabela por classe), caso contrário, ele lutará com você a cada passo do caminho. Outra coisa que eu não gosto no L2S é a necessidade de usar tipos específicos ( EntitySete EntityRef) para lidar com coleções, referências e carregamento lento. Isso significa que não é possível manter o ORM do modelo de domínio independente de adicionar outra camada de abstração.

Meu outro problema com o L2S é a única dependência do LINQ para gerar consultas. O provedor LINQ é muito bem escrito e geralmente cria SQL decente para a maioria das consultas, mas tenho minhas preocupações de que haja consultas mais complexas que não possam ser bem expressas com o LINQ. Usando o L2S, você basicamente precisa reverter para chamar procedimentos armazenados nesses casos, enquanto (por exemplo) o NHibernate possui várias APIs (provedor LINQ, QueryOver, HQL etc.) que podem ser usadas quando você deseja mais controle sobre o SQL gerado.

Na defesa do L2S sobre o NHibernate, há muito menos sobrecarga na instalação e execução de um projeto.

richeym
fonte
2

Não está morto, pois ainda funciona, mas se não estiver sendo desenvolvido mais adiante, pode fazer sentido mudar para outra coisa.

No entanto, se funcionar para o seu aplicativo, não há sentido em mudar para mudar.

ChrisF
fonte
2

mais estável que imho morto:

http://www.thinqlinq.com/default/LINQ-to-SQL-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

Eles transferiram seus esforços de melhoria para o Entity Framework, onde é realmente necessário para que esse produto seja bem-sucedido. Não espere nada de novo, além de compatibilidade e correção de bug no linq2sql por um tempo.

Este site é executado com um monte de linq2sql, se não me engano.

Conta
fonte
+1 para "estável" Melhor maneira de visualizar L2S, imho. Estável e não está mais sendo estendido / alterado.
Quentin-starin
Desculpe, mas "nada de novo além de compatibilidade e correção de erros" significa que está em contenção. Isso é basicamente uma garantia de que a comunidade se afastará dela, você não verá muitos projetos novos usando-o e, portanto, provavelmente também não deseja usá-lo em novos projetos. "Morto" não significa que não funciona, apenas significa que há pouca inovação ou interesse.
Jeremy
Do ponto de vista de uma grande empresa, o fato de o núcleo não estar mais sendo modificado significa que ele pode finalmente entrar na lista de técnicas aprovadas em muitos casos. Na minha linha de trabalho, estamos esperando por isso há algum tempo. A EF ainda é volátil para avançar e o L2S sempre atrai o interesse em situações em que a sobrecarga da EF não é desejada.
Bill
@ Jeremy As pessoas ainda usam o TeX?
alternativa
1

É estranho, mas já vi esse fraseado muito ("LINQ2SQL está morto") e não tenho certeza de onde ele vem *. É tão morto o Windows XP. A Microsoft interrompeu o suporte e criou algo novo (e aos meus olhos melhor), mas as pessoas ainda estão livres para usar o XP, assim como estão livres para usar o Linq2SQL. É certo que eu uso o Linq2SQL ao criar módulos DotNetNuke personalizados. No entanto, com novos recursos no EF4, como o primeiro código de desenvolvimento ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx ) é difícil encontrar razões para se manter no Linq2SQL. Não vejo um motivo para atualizar e atualizar o código, mas, para o novo código, não sei por que você não deseja usar o EF4.

* Com toda a honestidade, porém, sou muito ... obsessivo com a semântica! Peço desculpas se é irritante para os outros :)

Jetti
fonte