Apakah LINQ ke SQL Mati atau Hidup?

95

Saat saya berteman dengan LINQ ke SQL, tampaknya MS sedang menarik permadani dari bawahnya.

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

Dari sedikit penelitian saya, EF terlalu berlebihan untuk pekerjaan sederhana. Tetapi setelah pengumuman ini, apakah ada gunanya terus menggunakan LINQ ke SQL?

Di luar masa depan untuk LINQ ke SQL, bukankah ini hanya mengirimkan sinyal yang buruk? Mengingat kecepatan MS melempar bit ke dinding, apakah rasional untuk menggunakan bit baru lebih awal? (dan itu ramah, ini belum terlalu awal untuk LINQ ke SQL!).

Untuk pekerjaan LINQ ke SQL saya, saya pikir saya sedang menuju ke SubSonic!

Pembaruan: Beberapa pendapat baru:

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.
sumber
Tidak ada dalam pengumuman itu yang mengatakan tentang LINQ atau LINQ ke SQL yang hilang ...?
Codewerks
5
@AugustLights Saya rasa pengumuman itu mengatakan bahwa "kami tidak akan menghapus LINQ ke SQL, tetapi kami akan mengabaikannya sepenuhnya melalui EF"
Jon Limjap
Jon - Begitulah cara saya membacanya. Pengumuman tersebut mengatakan, "... Kerangka Kerja Entitas akan menjadi solusi akses data yang kami rekomendasikan untuk LINQ ke skenario relasional." Itu berarti selamat tinggal, LINQ ke SQL.
rp.
4
MFC tidak mati, hanya saja ini bukan solusi yang disukai. Apakah Anda masih membuat kode MFC? VB6 masih didukung, apakah Anda mengkodekannya? Selalu seperti ini, MS melakukan apa yang diinginkannya, bukan yang Anda inginkan.
gbjbaanb
1
@rp: Apa yang Anda maksud dengan DOA - Dead or Aliveatau Dead on arrival?
abatishchev

Jawaban:

64

1) Mereka tidak dapat "mematikan" Linq-to-SQL karena ini sudah menjadi bagian dari framework .net. Yang dapat mereka lakukan adalah berhenti menambahkan fitur ke dalamnya. Itu tidak menghalangi ribuan pengembang di luar sana yang sudah menggunakan L2S untuk memperluas dan meningkatkannya. Beberapa area inti sulit untuk disentuh tetapi sudah kokoh dan fitur desainer yang hilang dapat dengan mudah dipasang .

2) Salah satu sesi EF PDC menunjukkan bahwa mereka telah belajar beberapa pelajaran dari kegagalan EFv1 dan sekarang mereka menyalin dan menempelkan banyak barang dari L2S ke EF dan berpura-pura itu adalah barang EF baru. Dengan kata lain, L2S versi dua baru saja "diberi label ulang" EF.

3) LINQ seperti itu (Language Integrated Query) adalah yang terbaik sejak es krim irisan dan dapat digunakan dengan banyak hal selain L2S (Linq ke objek, Linq ke entitas, Linq ke XML, Linq-ke-apa pun ). Jadi upaya kelompok DP untuk memaksa [massa besar] pengadopsi L2S ke Kerangka Entitas [yang kurang populer dan saat ini cacat] bukanlah alasan untuk tidak mempelajari Linq.

Lihat juga utas ini (yang menurut saya sebagian memicu entri blog Tim): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Pembaruan 1: Edisi Desember 2008 dari cerita sampul Majalah Visual Studio oleh Roger Jennings adalah bacaan yang bagus tentang topik ini, dengan beberapa perbandingan L2S vs EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Pembaruan 2: Anders Hejlsberg dikutip di Redmond Developer News mengatakan " LINQ ke SQL tidak mati. Saya dapat meyakinkan Anda, itu tidak mati. Tidak ada yang hilang. Kami tidak pernah melakukan itu dan kami tidak akan pernah. "

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

KristoferA
sumber
14
Pencipta StackOverflow mengadopsi Linq ke SQL sebagai ORM pilihan mereka. Rupanya mereka memutuskan bahwa manfaatnya lebih besar daripada risikonya.
Robert Harvey
Apakah ini masih benar? Saya mendengar bahwa StackOverflow pindah dari L2S tetapi tidak dapat menemukan informasi ini.
Aaron
2
@ Aaron, ya, mereka menggunakan SQL tulisan tangan dengan ORM mikro mereka sendiri yang disebut Dapper. Mereka mungkin masih menggunakan LINQ-to-SQL di bagian situs yang kurang populer.
CMircea
28

Ada ambiguitas pada pertanyaan Anda yang perlu diselesaikan.

LINQ! = LINQ ke SQL

Ada banyak sekali teknologi dan penyedia LINQ:

  • Linq ke SQL;
  • Linq ke Entitas;
  • Linq ke Objek;
  • Linq ke XML;

... dan itu hanya dari Microsoft. Ada juga penyedia non-MS, termasuk NHibernate.

Posting blog yang Anda tautkan hanya berbicara tentang Linq ke SQL.

Keuntungan utama LINQ adalah Anda dapat mempelajari dan menggunakan satu sintaks kueri dan menggunakannya kembali di berbagai teknologi.

Mengingat hal ini, saya menyarankan bahwa segala kekurangan yang dirasakan tentang masa depan untuk "Linq To SQL" tidak relevan, karena keterampilan yang Anda peroleh dalam menulis LINQ Queries akan dapat ditransfer ke alat lain di masa mendatang.

Bevan
sumber
Sintaks SQL LINQ 2 cukup mirip dengan Entity Framework sehingga Anda dapat berjalan di antara keduanya dengan mudah.
Jason Short
Namun, pertanyaannya masih valid, karena implementasi LINQ ke SQL yang sebenarnya memiliki beberapa keuntungan khusus yang bekerja melawan SQL Server.
Tor Haugen
21

Kami tidak mematikan LINQ ke SQL. Kami mengoptimalkan EF, tetapi LINQ ke SQL jelas tidak dimatikan :)

- Scott / Microsoft.

Scott Barnes
sumber
Lol. ini membuatku bingung. apakah Anda harus mendapat persetujuan dari Microsoft untuk membuat pernyataan publik ini? : p
Kolob Canyon
eh? pada tahun 2009 itu adalah pesan yang membuat tim tersebut kacau jadi saya harus memperbaikinya ... sebagai manajer produk .net: D
Scott Barnes
13

Anda tidak hanya harus mempelajari Linq (System.Linq.Enumerable dan System.Linq.Querable), Anda juga perlu mempelajari peningkatan bahasa pemrograman untuk bahasa .net Anda.

Di C # 3.0 ini termasuk:

  • Metode ekstensi (metode statis dengan kata kunci ini pada parameter pertama)
  • Tipe tereka penyusun (var)
  • Sintaks Lambda (yang menghasilkan metode anonim atau Ekspresi bergantung pada konteks)
  • Penginisialisasi
  • Implementasi default properti (singkatan)

Baca lebih lanjut di sini .


Di VB 9.0 ada beberapa keajaiban XML sebaris, dan banyak hal lainnya (banyak yang mirip dengan daftar di atas untuk C #).

Baca lebih lanjut di sini .

Amy B
sumber
Wow, saya pasti mengalami hari yang benar-benar literal. Hanya dengan interpretasi di luar konteks yang sangat ketat dari kalimat itulah pertanyaannya - apakah jawaban saya masuk akal.
Amy B
@ David B, ya .. Saya seperti, ini adalah jawaban yang baik, saya hanya tidak mengerti bagaimana jawabannya menjawab pertanyaan ini. lol
mmcdole
1
Itu terus mendapatkan suara positif. Saya kira beberapa orang hanya perlu melihat informasi di tautan ... Jika Anda menyukai jawaban ini, Anda mungkin menyukai jawaban saya yang lebih baik di sini: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B
8

Sejujurnya saya tidak mengerti di artikel mana Anda membaca bahwa link2sql sudah mati.

Di postingan blog yang Anda tautkan, tertulis:

Kami mendengarkan pelanggan terkait LINQ hingga SQL dan akan terus mengembangkan produk berdasarkan masukan yang kami terima dari komunitas juga.

Bagi saya, bacaan seperti LINQ to SQL ini akan dikembangkan dan didukung di masa mendatang. Saya bertanya-tanya mengapa Anda pikir itu sudah mati?

Sam
sumber
7

Memang, menurut saya pilihan antara LINQ ke SQL, LINQ ke Entitas, dan LINQ untuk [masukkan ORM Pihak ke-3] di sini memberikan metodologi lapisan akses data ekosistem yang sangat sehat yang dapat dipilih oleh pengembang perangkat lunak. Penyedia pihak ketiga seperti NHibernate, LLBLGen dan bahkan Subsonik (tidak yakin apakah mereka akan menawarkan penyedia LINQ) pasti akan membuat persaingan menjadi lebih baik dan lebih menarik.

Karena itu, akan sangat menyedihkan bagi Microsoft untuk meninggalkan LINQ ke SQL, terutama karena ia memiliki pengikut yang baik - bahkan StackOverflow dibangun di atasnya.

Jon Limjap
sumber
6

Posting blog yang menarik tentang itu. Dan beberapa informasi terkait di postingan Stackoverflow .

Inti dasar tampaknya adalah komentar yang dibuat di blog ado.net yang menyatakan bahwa Entity Framework adalah satu-satunya hal yang mendapatkan waktu pengembang utama untuk Visual Studio 2010 dan Dot Net 4.

Tanggapan saya adalah - DUH. Kita semua tahu ini. Microsoft mengatakan secara terbuka kembali pada PDC 2007 bahwa LINQ to SQL adalah rilis jangka pendek untuk SQL Server karena tidak ada cerita LINQ lain untuk SQL Server. Ini hanya bekerja dengan SQL Server. Anda tidak dapat menulis LINQ ke penyedia SQL - tidak ada model untuk itu. Itu adalah teknologi satu kali, tidak bisa dikembangkan.

Kerangka Kerja Entitas adalah satu-satunya cara dari Microsoft untuk membangun Penyedia LINQ. Kerangka Kerja Entitas ternyata cukup kontreversial, tetapi saya pikir itu sebagian karena fakta bahwa LINQ ke SQL memiliki pengalaman pemrogram yang lebih baik saat ini. Entity Framework akan menangkap dan mengungguli LINQ ke SQL karena ini adalah alat ORM / Pemetaan masa depan dari Microsoft.

EDIT - Saya baru saja menulis sedikit lebih rinci tentang ini blog saya

EDIT2 - Penyedia yang Dapat Diperoleh - BUKAN hal yang sama dengan penyedia LINQ ke SQL. Anda dapat menulis Penyedia IQuerable Anda sendiri untuk apa pun yang Anda suka. Anda tidak mendapatkan dukungan desainer atau pembuatan model. Tidak ada model perancang gui yang saya ketahui untuk menghubungkan LINQ ke pembuatan model SQL.

Jason Short
sumber
1
Re .: "Anda tidak dapat menulis LINQ ke penyedia SQL - tidak ada model untuk itu." Nah, ada adalah . Hanya saja mereka memutuskan untuk menjadikan anggota yang diperlukan pada menit-menit terakhir pribadi untuk memberi EF keunggulan. Lihat blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA
1
Maaf, tautan sebelumnya seharusnya adalah blogs.msdn.com/mattwar/archive/2008/05/04/…
KristoferA
Terima kasih - belum membaca posting itu. Saya tahu bahwa ada API secara internal, tetapi tidak tahu apakah itu pernah diketahui publik.
Jason Short
1
Blog yang sama ( blogs.msdn.com/mattwar ) juga memiliki seri artikel lengkap (dengan contoh) tentang cara menulis penyedia, dan penyedia L2S yang dapat diunduh yang mungkin berguna bagi Anda.
KristoferA
Tidak masalah jika Anda dapat meretasnya - ini TIDAK secara resmi didukung oleh MS. Anda TIDAK memiliki integrasi VSIP untuk itu. Anda tidak bisa mendapatkan logo untuk aplikasi Anda ...
Jason Short
5

Saya kira saya tidak benar-benar melihat masalahnya di sini. Dari artikel yang Anda tautkan:

Kami mendengarkan pelanggan terkait LINQ hingga SQL dan akan terus mengembangkan produk berdasarkan masukan yang kami terima dari komunitas juga.

Apakah saya melewatkan sesuatu? Apa yang memberi kesan bahwa LINQ mati pada saat SQL tiba?

Gabriel Isenberg
sumber
4

Ada yang ingat VB6? Apakah Anda secara pribadi membencinya atau menyukainya, Microsoft menjual jutaan salinan, dan bisnis menghabiskan jutaan dolar untuk menulis jutaan baris VB6. Apa yang terjadi selanjutnya?

  • Nah, Microsoft masih mendukung VB6 (semacam - bukan IDE).
  • Dan Microsoft masih mengatakan bahwa mereka mendengarkan pelanggan VB6 bahkan sekarang ( pada September 09 ).
  • Tapi apakah pelanggan VB6 senang? Tidak sejak 2002 , 4 tahun setelah VB6 diluncurkan.
  • Kenapa tidak? Jalur peningkatan untuk investasi kode Anda ke teknologi pengganti, VB.Net, mahal .

Jadi pertimbangkan saja pelajaran itu. Bagi saya, tampaknya dukungan LinqToSQL agak enggan. Mereka wajib mendukungnya karena berada dalam framework .NET saat ini. Tapi apakah itu dalam .NET 5, 6, 7 ...? Pikirkan saja betapa hal itu penting bagi Anda (sejauh yang saya tahu, itu tidak masalah bagi Anda sama sekali).

MarkJ
sumber
bagi saya yang terbaik adalah ado.net murni dengan OracleConnection dan SqlConnection karena provider dan System.Data.DataSet ini tidak pernah mati. Apakah basis data Tabular. Secara pribadi saya suka EF tetapi DataSet profesional tetap menjadi standar.
pedrofernandes
3

Mungkin Anda tidak perlu repot-repot mempelajari Linq ke SQL, tapi masih ada Entities Linq yang akan mereka pertahankan.

korro
sumber
1
Pendekatan EF saat ini memiliki beberapa masalah serius, tidak terkecuali kelas dasar yang diberlakukan. Saya berharap EFvNext terlihat sangat berbeda di beberapa tempat; sampai saat itu, saya akan merekomendasikan menggunakan opsi paling sederhana: L2S - atau nHibernate ;-p
Marc Gravell
1
Setelah Anda menguasai LINQ, saya akan menyarankan bahwa "mempelajari" LINQ ke SQL cukup sepele. Ini hanya kasus menambahkan item kelas LINQ ke SQL ke proyek Anda dan menyeret beberapa tabel ke desainer.
Richard Ev
3

Jelas bahwa 2 ORM adalah satu dari banyak di kotak alat Microsoft, tetapi bagi saya tampaknya kerangka kerja yang salah telah dipilih karena semua alasan yang salah. Fakta bahwa tim C # melakukan pekerjaan yang seharusnya dilakukan oleh tim ADO.NET dalam waktu yang jauh lebih singkat dan melakukan pekerjaan dengan lebih baik adalah sulit untuk diterima oleh tim ado.net. Bukan berarti saya tahu cara kerja internal dari 2 kerangka kerja tetapi saya pikir akan jauh lebih cepat untuk meningkatkan kekurangan linq2sql pada kerangka entitas.

Tampaknya ada terlalu banyak politik yang terlibat dan saya pikir ini benar-benar akan merusak reputasi asp.net, karena saya tidak percaya bahwa kerangka kerja Entitas akan memberi kita pengalaman yang sama ramah pengguna seperti Linq2sql. Tim ado.net juga dapat mempelajari beberapa keterampilan komunikasi dari tim MVC asp.net karena klarifikasi tentang masalah tersebut paling tidak kabur.

Akan menyenangkan mempelajari apa yang Scott Gu dan tim MVC berdiri di sini karena sebagian besar contoh mereka menggunakan Linq2Sql.

terjetyl
sumber
2

Itu selalu agak aneh bahwa dengan Linq 2 Sql dan Entity Framework ada banyak area tumpang tindih. Saya pikir satu-satunya alasan L2S berhasil masuk ke rilis .NET 3.5 adalah karena ada keraguan besar bahwa EF akan melihat terangnya siang hari. Sekarang EF1 sudah keluar, baik itu v1 yang sangat kasar, tidak perlu L2S lagi.

Craig
sumber
2

(tidak, StingyJack, LINQ ke SQL tidak menggunakan kerangka entitas)

Bagaimanapun, saya tidak akan khawatir. Tim menyatakan bahwa mereka mendengarkan pelanggan tentang LINQ ke SQL. Dilihat dari antusiasme yang saya lihat untuk L2S, pelanggan (yaitu kami) akan mengungkapkan pikiran mereka.

Dan, seperti yang ditunjukkan KristoferA, mereka tidak dapat benar-benar 'membunuh' L2S, hanya membekukannya. Dan L2S, setelah dipoles, tidak membutuhkan pengembangan lebih lanjut. Dengan penyedia L2S di tempat, semua kemajuan di LINQ harus tersedia juga di L2S. Jadi pilihan tetap menjadi milik kita.

Tor Haugen
sumber
Yah, mereka dapat membunuhnya dengan tidak memasukkannya ke dalam Dot Net 4 yang seharusnya merupakan pemasangan berdampingan. Yang berarti aplikasi dot net 4 tidak akan memiliki akses ke sana tanpa menginstal 3.5SP1 di mesin yang sama - tidak tahu apakah itu benar atau tidak.
Jason Short
Ada yang ingat VB6? Microsoft masih mendukung VB6 (sejenisnya). Mereka masih mengatakan bahwa mereka mendengarkan pelanggan VB6 bahkan sampai sekarang. Tapi apakah kita bahagia? Tidak. Jalur peningkatan untuk mendapatkan kode kami ke teknologi pengganti, VB.Net, mahal. Jadi pertimbangkan saja pelajaran itu: dan pikirkan apakah LinqToSQL akan ada di .NET 4, 5, 6 ... dan seberapa penting itu bagi Anda.
MarkJ