O LINQ to SQL está morto ou vivo?

95

Quando faço amizade com o LINQ to SQL, parece que a MS está puxando o tapete de debaixo dele.

http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx

Pelo meu pouco de pesquisa, EF é um exagero para um trabalho simples. Mas, após esse anúncio, vale a pena continuar a usar o LINQ to SQL?

Além do futuro para LINQ to SQL, isso geralmente não envia um sinal ruim? Dada a velocidade com que a MS está jogando bits contra a parede, é racional usar qualquer um dos novos bits antes do tempo? (e isso é gentil, não é cedo para LINQ to SQL!).

Para meu trabalho de LINQ to SQL, acho que estou indo para a SubSonic!

Atualização: Algumas novas opiniões:

http://ayende.com/Blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx

http://codebetter.com/blogs/david.hayden/archive/2008/10/31/linq-to-sql-is-dead-read-between-the-lines.aspx

rp.
fonte
Nada naquele anúncio dizia nada sobre o desaparecimento do LINQ ou do LINQ to SQL ...?
Codewerks em
5
@AugustLights Acho que o anúncio diz que "não vamos remover o LINQ to SQL, mas vamos ignorá-lo totalmente no EF"
Jon Limjap
Jon - É assim que eu leio. O anúncio dizia: "... o Entity Framework será nossa solução de acesso a dados recomendada para LINQ para cenários relacionais." Isso se traduz em adeus, LINQ to SQL.
rp.
4
MFC não está morto, simplesmente não é a solução preferida. Você ainda codifica o MFC? VB6 ainda é compatível, você codifica isso? Sempre foi assim, o MS faz o que quer, não o que você quer.
gbjbaanb
1
@rp: O que você quis dizer com DOA - Dead or Aliveou Dead on arrival?
abatishchev

Respostas:

64

1) Eles não podem "matar" o Linq-to-SQL, pois ele já faz parte da estrutura .net. O que eles podem fazer é parar de adicionar recursos a ele. Isso não impede que os milhares de desenvolvedores que já estão usando o L2S o estendam e aprimorem. Algumas áreas principais são difíceis de tocar, mas já são sólidas e os recursos do designer que faltam podem ser facilmente aparafusados .

2) Uma das sessões PDC EF mostra que eles aprenderam algumas lições com o fiasco do EFv1 e agora estão copiando e colando muitas das coisas boas do L2S na EF e fingindo que são coisas novas da EF. Em outras palavras, a versão dois do L2S acaba de ser "renomeada" como EF.

3) LINQ como tal (Language Integrated Query) é a melhor coisa desde sorvete fatiado e pode ser usado com muitas outras coisas além de L2S (Linq para objetos, Linq para entidades, Linq para XML, Linq para qualquer coisa ) Portanto, a tentativa do grupo DP de forçar [as grandes massas de] adotantes do L2S a [o menos popular e atualmente com falhas] Entity Framework não é razão para não aprender o Linq.

Veja também este tópico (que acredito ter desencadeado parcialmente a postagem no blog de Tim): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Atualização 1: A edição de dezembro de 2008 da matéria de capa da Visual Studio Magazine, de Roger Jennings, é uma boa leitura sobre o assunto, com algumas comparações entre L2S e EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Atualização 2: Anders Hejlsberg foi citado no Redmond Developer News por ter dito " LINQ to SQL não está morto. Posso garantir a você, ele não está morto. Nada nunca vai embora. Nunca fizemos isso e nunca faremos. "

http://reddevnews.com/blogs/weblog.aspx?blog=3016

KristoferA
fonte
14
Os criadores do StackOverflow adotaram o Linq to SQL como seu ORM de escolha. Aparentemente, eles decidiram que os benefícios superavam os perigos.
Robert Harvey
Isso ainda é verdade? Ouvi dizer que StackOverflow mudou de L2S, mas não consigo encontrar essa informação.
Aaron de
2
@Aaron, sim, eles usam SQL escrito à mão com seu próprio micro-ORM chamado Dapper. Eles ainda podem usar LINQ-to-SQL nas seções menos populares do site.
CMircea
28

Há uma ambigüidade em sua pergunta que precisa ser resolvida.

LINQ! = LINQ para SQL

Existem várias tecnologias e provedores LINQ:

  • Linq para SQL;
  • Linq para entidades;
  • Linq para objetos;
  • Linq para XML;

... e esses são apenas os da Microsoft. Existem provedores não-MS também, incluindo NHibernate.

A postagem do blog que você vinculou fala apenas sobre Linq para SQL.

A principal vantagem do LINQ é que você pode aprender e usar uma sintaxe de consulta e reutilizá-la em várias tecnologias.

Diante disso, eu sugeriria que qualquer percepção de falta de futuro para "Linq para SQL" é irrelevante, pois as habilidades que você ganha ao escrever consultas LINQ serão transferíveis para outras ferramentas no futuro.

Bevan
fonte
A sintaxe do LINQ 2 SQL é semelhante o suficiente ao Entity Framework para que você possa caminhar entre os dois facilmente.
Jason Short,
Sua pergunta ainda é válida, pois a implementação real do LINQ to SQL tem algumas vantagens específicas em relação ao SQL Server.
Tor Haugen
21

Não estamos eliminando o LINQ to SQL. Estamos otimizando para EF, mas LINQ to SQL definitivamente não está sendo eliminado :)

- Scott / Microsoft.

Scott Barnes
fonte
Ri muito. isso me quebra. você teve que obter a aprovação da Microsoft para fazer esta declaração pública? : p
Kolob Canyon
Eh? em 2009 essa foi uma mensagem que a equipe em questão errou, então eu tive que consertá-la ... como gerente de produto do .net: D
Scott Barnes
13

Não apenas você deve aprender Linq (System.Linq.Enumerable e System.Linq.Queryable), você precisará aprender os aprimoramentos da linguagem de programação para sua linguagem .net.

Em C # 3.0, eles incluem:

  • Métodos de extensão (métodos estáticos com esta palavra-chave no primeiro parâmetro)
  • Tipos inferidos do compilador (var)
  • Sintaxe Lambda (que gera um método anônimo ou uma Expressão dependendo do contexto)
  • Inicializadores
  • Implementação padrão de propriedade (uma abreviação)

Leia mais aqui .


No VB 9.0, há alguma mágica do XML embutido e muitas outras coisas (muitas são semelhantes à lista acima para C #).

Leia mais aqui .

Amy B
fonte
Uau, devo ter tido um dia realmente literal. Somente com uma interpretação realmente estrita fora do contexto da frase que é a questão - minha resposta faz sentido.
Amy B
@David B, sim .. Eu pensei, esta é uma resposta ok, eu só não vejo como isso responde a essa pergunta. lol
mmcdole
1
Ele continua recebendo votos positivos. Acho que algumas pessoas só precisam ver as informações nos links ... Se você gostou desta resposta, talvez queira uma resposta melhor aqui: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B
8

Eu honestamente não entendo onde naquele artigo você leu que link2sql está morto.

Na postagem do blog que você vinculou a ele diz:

Estamos ouvindo os clientes em relação ao LINQ to SQL e continuaremos a desenvolver o produto com base nos comentários que recebemos da comunidade também.

Para mim, parece que LINQ to SQL será desenvolvido e com suporte no futuro. Eu me pergunto por que você acha que ele está morto?

Sam
fonte
7

Concedido, eu acho que a escolha entre LINQ to SQL, LINQ to Entities e LINQ to [inserir ORM de terceiros] aqui fornece um ecossistema perfeitamente saudável de metodologias de camada de acesso a dados que um desenvolvedor de software pode escolher. Provedores terceirizados como NHibernate, LLBLGen e até Subsonic (não tenho certeza se eles vão oferecer provedores LINQ) definitivamente tornarão a competição melhor e mais interessante.

Dito isso, será totalmente triste para a Microsoft abandonar o LINQ to SQL, especialmente porque ele tem um bom número de seguidores - até mesmo o StackOverflow é construído sobre ele.

Jon Limjap
fonte
6

Postagem de blog interessante sobre isso. E algumas informações relacionadas em postagens Stackoverflow .

A essência básica parece ser os comentários feitos no blog ado.net que afirmam que o Entity Framework é a única coisa que está ganhando tempo de desenvolvedor importante para Visual Studio 2010 e Dot Net 4.

Minha resposta é - DUH. Todos nós sabemos disso. A Microsoft disse publicamente no PDC 2007 que o LINQ to SQL era um lançamento de curto prazo para o SQL Server porque não havia nenhuma outra história do LINQ para o SQL Server. Ele só funciona com o SQL Server. Você não pode escrever um provedor LINQ to SQL - não existe um modelo para ele. Era uma tecnologia isolada, não extensível.

O Entity Framework é a ÚNICA maneira da Microsoft criar um Provedor LINQ. O Entity Framework revelou-se bastante controverso, mas acho que isso se deve em parte ao fato de que o LINQ to SQL tem uma experiência de programador melhor hoje. O Entity Framework irá capturar e superar o LINQ to SQL porque é a ferramenta ORM / Mapping do futuro da Microsoft.

EDITAR - Acabei de escrever um pouco mais detalhado sobre isso no meu blog

EDIT2 - Provedor IQueryable - NÃO é a mesma coisa que um provedor LINQ to SQL. Você pode escrever seu próprio Provedor IQueryable para o que quiser. Você não recebe suporte de designer ou geração de modelo. Não há nenhum modelo de designer de GUI que eu conheça para vincular a geração de modelos LINQ to SQL.

Jason Short
fonte
1
Re .: "Você não pode escrever um provedor LINQ to SQL - não existe um modelo para ele." Bem, não é . Acontece que eles decidiram tornar os membros necessários privados de última hora para dar uma vantagem à EF. Consulte blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA
1
Desculpe, o link anterior deveria ser blogs.msdn.com/mattwar/archive/2008/05/04/…
KristoferA
Obrigado - não tinha lido aquele post. Eu sabia que havia uma API internamente, mas não sabia se ela já havia sido divulgada publicamente.
Jason Short,
1
O mesmo blog ( blogs.msdn.com/mattwar ) também tem uma série completa de artigos (com exemplos) sobre como escrever provedores e um provedor L2S conectável para download que você pode achar útil.
KristoferA
Não importa se você pode hackear - NÃO é oficialmente suportado pela MS. Você NÃO tem integração com o VSIP para isso. Você não pode obter um logotipo para seu aplicativo ...
Jason Short,
5

Acho que realmente não vejo o problema aqui. Do artigo que você vinculou:

Estamos ouvindo os clientes em relação ao LINQ to SQL e continuaremos a desenvolver o produto com base nos comentários que recebemos da comunidade também.

Estou esquecendo de algo? O que dá a impressão de que o LINQ to SQL está morto na chegada?

Gabriel isenberg
fonte
4

Alguém se lembra do VB6? Quer você pessoalmente odeie ou ame, a Microsoft vendeu milhões de cópias, e as empresas gastaram milhões de dólares escrevendo milhões de linhas de VB6. O que aconteceu depois?

  • Bem, a Microsoft ainda oferece suporte a VB6 oferece (tipo de - não o IDE).
  • E a Microsoft ainda diz que está ouvindo os clientes VB6 até agora ( em setembro de 09 ).
  • Mas os clientes do VB6 estão satisfeitos? Não desde 2002 , 4 anos após o lançamento do VB6.
  • Por que não? Os caminhos de atualização para seu investimento em código para a tecnologia de substituição, VB.Net, são caros .

Portanto, apenas considere essa lição. Para mim, parece que o suporte LinqToSQL será bastante relutante. Eles são obrigados a dar suporte porque está no framework .NET atual. Mas será no .NET 5, 6, 7 ...? Pense no quanto isso é importante para você (pelo que sei, não importa para você).

MarkJ
fonte
para mim, o melhor é puro ado.net com OracleConnection e SqlConnection porque esses provedores e System.Data.DataSet nunca morrem. É a base de dados tabulares. Pessoal eu gosto da EF, mas o DataSet profissional continua a ser um padrão.
pedrofernandes
3

Talvez você não deva se preocupar em aprender Linq para SQL, mas ainda há as Entidades Linq que eles manterão.

Korro
fonte
1
A abordagem EF atual tem alguns problemas sérios, não menos importante a classe base forçada. Eu esperaria que o EFvNext tivesse uma aparência bem diferente em alguns lugares; até então, eu recomendaria usar a opção mais simples: L2S - ou nHibernate ;-p
Marc Gravell
1
Depois de definir o LINQ, eu sugeriria que "aprender" o LINQ to SQL é bastante trivial. É apenas um caso de adicionar um item de classes LINQ to SQL ao seu projeto e arrastar e soltar algumas tabelas no designer.
Richard Ev
3

É óbvio que 2 ORMs é um para muitos na caixa de ferramentas da Microsoft, mas para mim parece que a estrutura errada foi escolhida por todos os motivos errados. O fato de que a equipe C # fez o trabalho que a equipe ADO.NET deveria fazer em muito menos tempo e fez o trabalho muito melhor é difícil de engolir para a equipe ado.net. Não que eu saiba o funcionamento interno dos 2 frameworks, mas acho que seria muito mais rápido atualizar as deficiências que o linq2sql tem para o framework de entidade.

Parece haver muita política envolvida e acho que isso realmente vai prejudicar a reputação do asp.net, uma vez que não tenho confiança que o framework Entity nos dará uma experiência tão amigável quanto o Linq2sql. A equipe ado.net também pode aprender algumas habilidades de comunicação com a equipe mvc do asp.net, pois os esclarecimentos sobre o problema são, na melhor das hipóteses, vagos.

Seria divertido aprender o que Scott Gu e sua equipe MVC representam aqui, já que a maioria de seus exemplos está usando Linq2Sql.

terjetil
fonte
2

Sempre foi um pouco estranho que com Linq 2 Sql e Entity Framework houvesse grandes áreas de sobreposição. Acho que a única razão pela qual o L2S só conseguiu chegar ao .NET 3.5 foi porque havia uma grande dúvida de que a EF algum dia veria a luz do dia. Agora que o EF1 foi lançado, seja um v1 muito bruto, não havia mais necessidade do L2S.

Craig
fonte
2

(não, StingyJack, LINQ to SQL não usa a estrutura de entidade)

De qualquer forma, eu não me preocuparia. Tim afirma que eles estão ouvindo os clientes em relação ao LINQ to SQL. A julgar pelo entusiasmo que vi pela L2S, os clientes (somos nós) falarão o que pensam.

E, como KristoferA aponta, eles não podem realmente 'matar' L2S, apenas congelá-lo. E o L2S, uma vez polido, não requer muito desenvolvimento adicional. Com o provedor L2S instalado, quaisquer avanços no LINQ também devem estar disponíveis no L2S. Portanto, a escolha ainda será nossa.

Tor Haugen
fonte
Bem, eles poderiam eliminá-lo não incluindo no Dot Net 4, que é suposto ser uma instalação lado a lado. O que significaria que os aplicativos dot net 4 não teriam acesso a ele sem instalar o 3.5SP1 na mesma máquina - não sei se isso é verdade ou não.
Jason Short,
Alguém se lembra do VB6? A Microsoft ainda oferece suporte a VB6 (tipo de). Eles ainda dizem que estão ouvindo os clientes VB6 até agora. Mas estamos felizes? Não. Os caminhos de atualização para obter nosso código para a tecnologia de substituição, VB.Net, são caros. Portanto, apenas considere essa lição: e pense se o LinqToSQL estará em .NET 4, 5, 6 ... e o quanto isso importa para você.
MarkJ