LINQ to SQL è morto o attivo?


95

Proprio quando faccio amicizia con LINQ to SQL, sembra che MS stia tirando fuori il tappeto da sotto.

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

Dalla mia piccola ricerca, EF è decisamente eccessivo per il lavoro semplice. Ma dopo questo annuncio ha senso continuare a utilizzare LINQ to SQL?

Al di là del futuro di LINQ to SQL, questo non invia generalmente un segnale negativo? Data la velocità con cui MS lancia i pezzi contro il muro, è razionale usare presto qualcuno dei nuovi pezzi? (e questo è gentile, non è ancora presto per LINQ to SQL!).

Per il mio lavoro con LINQ to SQL, penso di essere diretto a SubSonic!

Aggiornamento: un paio di nuove opinioni:

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


Niente in quell'annuncio diceva qualcosa su LINQ o LINQ to SQL che andavano via ...?
Codewerks

5
@ AugustLights Penso che quello che dice l'annuncio è che "non rimuoveremo LINQ to SQL, ma lo ignoreremo completamente su EF"
Jon Limjap

Jon - È così che l'ho letto. L'annuncio diceva: "... Entity Framework sarà la nostra soluzione di accesso ai dati consigliata per LINQ a scenari relazionali". Questo si traduce in arrivederci, LINQ to SQL.
rp.

4
MFC non è morto, semplicemente non è la soluzione preferita. Codifichi ancora MFC? VB6 è ancora supportato, lo codifichi? È sempre stato così, la SM fa quello che vuole, non quello che vuoi tu.
gbjbaanb

1
@rp: Cosa intendevi sotto DOA - Dead or Aliveo Dead on arrival?
abatishchev

Risposte:


64

1) Non possono "uccidere" Linq-to-SQL poiché fa già parte del framework .net. Quello che possono fare è smettere di aggiungere funzionalità ad esso. Ciò non impedisce alle migliaia di sviluppatori là fuori che stanno già utilizzando L2S di estenderlo e migliorarlo. Alcune aree principali sono difficili da toccare, ma sono già solide e le funzionalità di progettazione mancanti possono essere facilmente fissate .

2) Una delle sessioni PDC EF mostra che hanno imparato un paio di lezioni dal fiasco EFv1 e ora stanno copiando e incollando molte delle chicche da L2S in EF e fingendo che sia nuova roba EF. In altre parole, la versione due di L2S è stata appena "rietichettata" EF.

3) LINQ in quanto tale (Language Integrated Query) è la cosa migliore dopo il gelato a fette e può essere utilizzato con molte altre cose oltre a L2S (Linq a oggetti, Linq a entità, Linq a XML, Linq a qualsiasi cosa ). Quindi il tentativo del gruppo DP di forzare [la vasta massa di] utenti che adottano L2S verso [il meno popolare e attualmente imperfetto] Entity Framework non è un motivo per non imparare Linq.

Vedi anche questo thread (che è quello che credo abbia in parte attivato il post del blog di Tim): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Aggiornamento 1: il numero di dicembre 2008 della copertina di Visual Studio Magazine di Roger Jennings è una buona lettura sull'argomento, con alcuni confronti tra L2S e EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Aggiornamento 2: Anders Hejlsberg è stato citato in Redmond Developer News dicendo che " LINQ to SQL non è morto. Posso assicurarti che non è morto. Niente va mai via. Non l'abbiamo mai fatto e non lo faremo mai " .

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


14
I creatori di StackOverflow hanno adottato Linq in SQL come ORM preferito. Apparentemente hanno deciso che i benefici superavano i pericoli.
Robert Harvey,

È ancora vero? Ho sentito che StackOverflow si è allontanato da L2S ma non riesco a trovare queste informazioni.
Aaron

2
@ Aaron, sì, usano l'SQL scritto a mano con il proprio micro-ORM chiamato Dapper. Potrebbero ancora usare LINQ-to-SQL nelle sezioni meno popolari del sito.
CMircea

28

C'è un'ambiguità nella tua domanda che deve essere risolta.

LINQ! = LINQ to SQL

Esistono tantissime tecnologie e provider LINQ:

  • Linq a SQL;
  • Linq alle entità;
  • Linq agli oggetti;
  • Linq in XML;

... e quelli sono solo quelli di Microsoft. Ci sono anche fornitori non appartenenti alla SM, incluso NHibernate.

Il post del blog che hai collegato parla solo di Linq a SQL.

Il vantaggio principale di LINQ è che puoi apprendere e utilizzare una sintassi di query e riutilizzarla su più tecnologie.

Detto questo, suggerirei che qualsiasi mancanza percepita di un futuro per "Linq To SQL" è irrilevante, poiché le competenze acquisite nello scrivere query LINQ saranno trasferibili ad altri strumenti in futuro.


La sintassi SQL di LINQ 2 è abbastanza simile a Entity Framework che puoi spostarti tra i due abbastanza facilmente.
Jason Short,

La sua domanda è ancora valida, tuttavia, poiché l'effettiva implementazione di LINQ to SQL presenta alcuni vantaggi specifici rispetto a SQL Server.
Tor Haugen

21

Non stiamo uccidendo LINQ to SQL. Stiamo ottimizzando per EF, ma LINQ to SQL non verrà sicuramente eliminato :)

- Scott / Microsoft.


Lol. questo mi fa arrabbiare. hai dovuto ottenere l'approvazione da Microsoft per fare questa dichiarazione pubblica? : p
Kolob Canyon

eh? nel 2009 quello era un messaggio che il team in questione ha sbagliato, quindi ho dovuto aggiustarlo ... come product manager di .net: D
Scott Barnes

13

Non solo dovresti imparare Linq (System.Linq.Enumerable e System.Linq.Queryable), ma avrai bisogno di imparare i miglioramenti del linguaggio di programmazione per il tuo linguaggio .net.

In C # 3.0 questi includono:

  • Metodi di estensione (metodi statici con la parola chiave this sul primo parametro)
  • Tipi dedotti dal compilatore (var)
  • Sintassi Lambda (che genera un metodo anonimo o un'espressione a seconda del contesto)
  • Inizializzatori
  • Implementazione predefinita della proprietà (una scorciatoia)

Leggi di più qui .


In VB 9.0 c'è un po 'di magia XML in linea e molte altre cose (molte sono simili all'elenco precedente per C #).

Leggi di più qui .


Wow, devo aver avuto una giornata davvero letterale. Solo con un'interpretazione veramente rigorosa fuori contesto della frase che è la domanda, la mia risposta ha senso.
Amy B

@David B, sì .. ero tipo, questa è una risposta ok, semplicemente non vedo come risponde a questa domanda. lol
mmcdole

1
Continua a ricevere voti positivi. Immagino che alcune persone abbiano solo bisogno di vedere le informazioni nei link ... Se ti è piaciuta questa risposta, potresti apprezzare la mia risposta migliore qui: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B

8

Onestamente non capisco dove in quell'articolo hai letto che link2sql è morto.

Nel post del blog a cui ti sei collegato dice:

Stiamo ascoltando i clienti riguardo a LINQ to SQL e continueremo a sviluppare il prodotto in base al feedback che riceviamo anche dalla comunità.

Per me questo si legge come se LINQ to SQL sarà sviluppato e supportato in futuro. Mi chiedo perché pensi che sia morto?


7

Certo, penso che la scelta tra LINQ to SQL, LINQ to Entities e LINQ per [inserire ORM di terze parti] qui fornisca un ecosistema perfettamente sano di metodologie del livello di accesso ai dati tra cui uno sviluppatore di software può scegliere. I fornitori di terze parti come NHibernate, LLBLGen e persino Subsonic (non sono sicuro se offriranno fornitori LINQ) renderanno sicuramente la concorrenza migliore e più interessante.

Detto questo, sarà totalmente triste per Microsoft abbandonare LINQ to SQL, soprattutto perché ha un buon seguito, anche StackOverflow è costruito su di esso.


6

Interessante post sul blog a riguardo. E alcune informazioni correlate sui post di Stackoverflow .

L'essenza di base sembra essere i commenti fatti sul blog ado.net che affermano che Entity Framework è l'unica cosa che sta ottenendo un grande tempo di sviluppo per Visual Studio 2010 e Dot Net 4.

La mia risposta è - DUH. Lo sappiamo tutti. Microsoft ha dichiarato pubblicamente al PDC 2007 che LINQ to SQL era una versione a breve termine per SQL Server perché non c'erano altre storie su LINQ per SQL Server. Funziona solo con SQL Server. Non è possibile scrivere un provider LINQ to SQL: non esiste un modello per esso. Era una tecnologia una tantum, non estensibile.

Entity Framework è l'UNICO modo di Microsoft per creare un provider LINQ. Entity Framework si è rivelato piuttosto controverso, ma penso che ciò sia in parte dovuto al fatto che LINQ to SQL ha una migliore esperienza di programmazione oggi. Entity Framework catturerà e supererà LINQ to SQL perché è lo strumento ORM / Mapping del futuro di Microsoft.

MODIFICA - Ho appena scritto un articolo leggermente più dettagliato su questo sul mio blog

EDIT2 - Provider IQueryable - NON è la stessa cosa di un provider LINQ to SQL. Puoi scrivere il tuo provider IQueryable per qualsiasi cosa tu voglia. Non si ottiene alcun supporto da parte del designer o generazione di modelli. Non esiste un modello di progettazione GUI che io conosca per il collegamento a LINQ alla generazione di modelli SQL.


1
Oggetto: "Non è possibile scrivere un provider LINQ to SQL - non esiste un modello per esso." Bene, c'è . È solo che hanno deciso di rendere privati ​​i membri necessari all'ultimo minuto per dare un vantaggio a EF. Vedi blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA

1
Spiacenti, il collegamento precedente avrebbe dovuto essere blogs.msdn.com/mattwar/archive/2008/05/04/…
KristoferA

Grazie - non avevo letto quel post. Sapevo che internamente c'era un'API, ma non sapevo se fosse mai stata resa pubblica.
Jason Short

1
Lo stesso blog ( blogs.msdn.com/mattwar ) ha anche una serie completa di articoli (con esempi) su come scrivere provider e un provider L2S collegabile e scaricabile che potresti trovare utile.
KristoferA

Non importa se puoi hackerarlo - NON è ufficialmente supportato da MS. Non hai l'integrazione VSIP per questo. Non puoi ottenere un logo per la tua app ...
Jason Short,

5

Immagino di non vedere davvero il problema qui. Dall'articolo che hai collegato:

Stiamo ascoltando i clienti in merito a LINQ to SQL e continueremo a sviluppare il prodotto in base al feedback che riceviamo anche dalla comunità.

Mi sto perdendo qualcosa? Cosa dà l'impressione che LINQ to SQL sia morto all'arrivo?



4

Qualcuno ricorda VB6? Che tu lo detesti o lo ami personalmente, Microsoft ha venduto milioni di copie e le aziende hanno speso milioni di dollari per scrivere milioni di righe di VB6. Quello che è successo dopo?

  • Bene, Microsoft supporta ancora VB6 (più o meno - non l'IDE).
  • E Microsoft dice ancora che stanno ascoltando i clienti VB6 anche adesso ( nel settembre 09 ).
  • Ma i clienti VB6 sono felici? Non dal 2002 , 4 anni dopo il lancio di VB6.
  • Perchè no? I percorsi di aggiornamento per il tuo investimento di codice nella tecnologia sostitutiva, VB.Net, sono costosi .

Quindi considera questa lezione. Per me, sembra che il supporto di LinqToSQL sarà piuttosto riluttante. Sono obbligati a supportarlo perché è nell'attuale framework .NET. Ma sarà in .NET 5, 6, 7 ...? Pensa solo a quanto ti importa (per quanto ne so, non ti importa affatto).


per me il meglio è puro ado.net con OracleConnection e SqlConnection perché questi provider e System.Data.DataSet non muoiono mai. È la base dei dati tabulari. Personale mi piace EF ma il DataSet professionale continua ad essere uno standard.
pedrofernandes

3

Forse non dovresti preoccuparti di imparare da Linq a SQL, ma ci sono ancora le entità Linq che manterranno.


1
L'attuale approccio EF presenta alcuni problemi seri, non ultimo la classe base applicata. Mi aspetto che EFvNext abbia un aspetto piuttosto diverso in alcuni punti; fino ad allora, consiglierei di utilizzare l'opzione più semplice: L2S - o nHibernate ;-p
Marc Gravell

1
Una volta che hai capito LINQ, suggerirei che "imparare" LINQ to SQL è piuttosto banale. Si tratta solo di aggiungere un elemento di classi LINQ to SQL al progetto e trascinare alcune tabelle sul designer.
Richard Ev,


3

È ovvio che 2 ORM è uno a molti nella cassetta degli attrezzi di Microsoft, ma a me sembra che sia stato scelto il framework sbagliato per tutti i motivi sbagliati. Il fatto che il team C # abbia svolto il lavoro che il team ADO.NET avrebbe dovuto svolgere in tempi molto più brevi e ha svolto il lavoro molto meglio è difficile da digerire per il team ado.net. Non che io conosca il funzionamento interno dei 2 framework, ma penso che sarebbe molto più veloce aggiornare le carenze di linq2sql al framework di entità.

Sembra che ci sia troppa politica coinvolta e penso che questo danneggerà davvero la reputazione di asp.net, dal momento che non ho fiducia in quel framework di Entity che ci darà un'esperienza altrettanto user friendly come Linq2sql. Il team di ado.net potrebbe anche apprendere alcune abilità di comunicazione dal team asp.net mvc poiché i chiarimenti sul problema sono nel migliore dei casi vaghi.

Sarebbe divertente imparare cosa stanno qui Scott Gu e il suo team MVC poiché la maggior parte dei loro esempi utilizza Linq2Sql.


2

È sempre stato un po 'strano che con Linq 2 Sql ed Entity Framework ci fossero ampie aree di sovrapposizione. Penso che l'unico motivo per cui L2S sia arrivato solo nella versione .NET 3.5 era perché c'era un grande dubbio che EF avrebbe mai visto la luce del giorno. Ora che EF1 è uscito, sia esso un v1 molto approssimativo, non c'era più bisogno di L2S.


2

(no, StingyJack, LINQ to SQL non utilizza il framework delle entità)

Comunque, non mi preoccuperei. Tim afferma che stanno ascoltando i clienti riguardo a LINQ to SQL. A giudicare dall'entusiasmo che ho visto per L2S, i clienti (cioè noi) diranno le loro opinioni.

E, come sottolinea KristoferA, non possono effettivamente "uccidere" L2S, ma solo congelarlo. E L2S, una volta lucidato, non richiede molto ulteriore sviluppo. Con il provider L2S in atto, qualsiasi progresso in LINQ dovrebbe essere disponibile anche in L2S. Quindi la scelta sarà ancora nostra.


Bene, potrebbero ucciderlo non includendolo in Dot Net 4 che dovrebbe essere un'installazione fianco a fianco. Il che significherebbe che le app dot net 4 non avrebbero accesso ad esso senza installare 3.5SP1 sulla stessa macchina: non so se sia vero o no.
Jason Short,

Qualcuno ricorda VB6? Microsoft supporta ancora VB6 (più o meno). Dicono ancora che stanno ascoltando i clienti VB6 anche adesso. Ma siamo felici? No. I percorsi di aggiornamento per portare il nostro codice alla tecnologia sostitutiva, VB.Net, sono costosi. Quindi considera solo quella lezione: e pensa se LinqToSQL sarà in .NET 4, 5, 6 ... e quanto è importante per te.
MarkJ

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.