Apakah LINQ to SQL sudah mati?

17

Apakah ada alasan untuk tetap menggunakan Linq ke SQL, atau lebih baik pindah ke teknik ORM seperti EF, NHibernate dll.

Kami menggunakan Linq to SQL dalam aplikasi perusahaan besar baru yang akan ada untuk waktu yang lama. Motivasi untuk aplikasi perusahaan baru ini adalah bahwa aplikasi itu biasa ditulis dalam Visual Basic dan karena Microsoft menghentikan dukungan kami di mana dipaksa untuk menulis ulang aplikasi. Sepertinya kita sudah ada di sana tetapi kali ini dengan DAL (Lapisan Akses Data) kami.

Saya sudah membaca artikel ini , tetapi hanya membandingkan dengan kelemahan EF.

Amir Rezaei
sumber
+1 hebat Q. Ini menarik bagi saya, saya telah mempertimbangkan untuk memindahkan prosedur tersimpan saya dan string kueri SQL paramterised ke LINQ ke SQL untuk meningkatkan keterbacaan, saya tidak tahu itu tidak sedang dikembangkan lagi.
fearoffours
MS memiliki .NET 4 jenis slide hal kecil yang mengatakan itu tidak mati - tapi itu bisa berarti banyak hal. Mereka memang memperbaikinya di .NET 4.0: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester
Jangan lagi. Pertanyaan ini telah diperdebatkan ad-mual di StackOverflow. Bisakah Anda mengatakan FUD?
Robert Harvey

Jawaban:

11

Jika Anda sudah menggunakannya dan tidak menemui kesulitan, saya akan tetap menggunakannya pada proyek yang ada.

Linq2SQL cukup bagus, tetapi terbatas, ORM - jika Anda ingin memetakan objek Anda dengan cara yang lebih kompleks daripada yang diberikan oleh Linq2SQL maka Anda akan mandek. Microsoft memang memperbaiki beberapa bug ketika mereka keluar dengan .net 4 tetapi telah menyatakan bahwa mereka tidak akan mencurahkan sumber daya untuk memperluasnya.

Saya akan mengatakan jika Anda memiliki proyek yang cukup sederhana yang mungkin memiliki masa hidup terbatas maka Linq2SQL adalah pilihan ringan yang layak selama Anda berhati-hati untuk tidak membocorkan dependensi ke Linq2SQL di semua tempat. Untuk hal lain saya akan menggunakan yang lain (NHibernate atau EF misalnya) karena Linq2SQL adalah jalan buntu.

FinnNk
sumber
Saya hanya bisa setuju, tidak benar-benar mati tetapi ada di atas meja dalam triase dalam beberapa cara. Jika semuanya berfungsi dan dampaknya sangat besar untuk mengubahnya sekarang ... Anda mungkin ingin sedikit bersantai dan mencari waktu yang tepat untuk melakukan konversi ke EF / NHibernate, bisa menjadi proyek peningkatan yang dibiayai (pada akhirnya kami semua menginginkan pekerjaan, roti dan mentega di atas meja).
Siber cyber
@cyberzed: Kedengarannya seperti alasan yang bagus untuk pekerjaan yang tidak perlu.
Robert Harvey
12

Itu tidak mati, tetapi Microsoft sekarang fokus pada Entity Framework.

Saya telah menggunakan LINQ untuk SQL pada proyek-proyek kecil, dan itu cukup bagus sebagai lapisan data ringan dan saya akan mempertimbangkan menggunakannya lagi pada proyek berukuran serupa. Implementasi LINQ sendiri sangat bagus dan hingga saat ini jauh lebih baik daripada proyek NHibernate LINQ. Pada proyek yang lebih besar saya menggunakan L2S aktif, saya merasa sulit untuk datang dengan pola unit-of-work yang saya senangi, karena keterbatasan dengan kelas 'DataContext' L2S. Mencoba menerapkan sesuatu seperti 'Sesi per permintaan' dengan L2S tampaknya sangat sulit atau tidak mungkin.

Saya juga tidak akan benar-benar menganggap L2S sebagai ORM sejati, karena benar-benar tidak memberi Anda banyak opsi pemetaan. Desain kelas Anda benar-benar harus mengikuti skema database Anda (tabel-per-kelas) jika tidak, ia akan bertarung dengan Anda setiap langkah. Hal lain yang saya tidak suka tentang L2S ​​adalah kebutuhan untuk menggunakan tipe spesifik ( EntitySetdan EntityRef) untuk menangani koleksi, referensi dan pemuatan yang malas. Ini berarti tidak mungkin mempertahankan model domain Anda ORM agnostik tanpa menambahkan lapisan abstraksi lainnya.

Masalah saya yang lain dengan L2S adalah ketergantungan tunggal pada LINQ untuk menghasilkan pertanyaan. Penyedia LINQ ditulis dengan sangat baik dan umumnya membuat SQL yang layak untuk sebagian besar pertanyaan, tetapi saya khawatir bahwa ada pertanyaan yang lebih kompleks yang tidak dapat diekspresikan dengan baik dengan LINQ. Menggunakan L2S pada dasarnya Anda harus kembali ke memanggil prosedur tersimpan dalam kasus ini, sedangkan (misalnya) NHibernate memiliki beberapa API (penyedia LINQ, QueryOver, HQL dll) yang dapat digunakan ketika Anda ingin lebih mengontrol SQL yang dihasilkan.

Dalam pembelaan L2S atas NHibernate, ada jauh lebih sedikit overhead dalam membangun dan menjalankan proyek.

richeym
sumber
2

Itu tidak mati karena masih berfungsi, tetapi jika tidak dikembangkan lebih lanjut maka masuk akal untuk pindah ke sesuatu yang lain.

Namun, jika itu berfungsi untuk aplikasi Anda, tidak ada gunanya berubah demi perubahan.

ChrisF
sumber
2

lebih stabil daripada imho mati:

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/

Mereka telah mengalihkan upaya peningkatan mereka ke Entity Framework di mana sangat dibutuhkan jika produk itu ingin berhasil. Harapkan tidak ada yang baru selain kompatibilitas dan perbaikan bug pada linq2sql untuk sementara waktu.

Situs ini dijalankan dengan banyak sekali linq2sql jika saya tidak salah.

Tagihan
sumber
+1 untuk "stable" Cara terbaik untuk melihat L2S, imho. Stabil dan tidak lagi diperpanjang / diubah.
quentin-starin
Maaf tapi "tidak ada yang baru tapi kompatibilitas dan perbaikan bug" berarti itu dalam penahanan. Itu pada dasarnya merupakan jaminan bahwa komunitas akan menjauh darinya, Anda tidak akan melihat banyak proyek baru menggunakannya dan Anda mungkin juga tidak ingin menggunakannya dalam proyek baru. "Mati" tidak berarti itu tidak berhasil, itu hanya berarti ada sedikit inovasi atau minat.
Jeremy
Dari sudut pandang perusahaan besar fakta bahwa inti tidak lagi dimodifikasi berarti akhirnya bisa masuk daftar teknik yang disetujui dalam banyak kasus. Dalam pekerjaan saya, kami telah menunggu beberapa saat. EF masih belum stabil untuk melompat ke dalam dan L2S selalu akan menarik minat dalam situasi di mana overhead EF tidak diinginkan.
Bill
@ Jeremy Apakah orang masih menggunakan TeX?
alternatif
1

Aneh tapi saya sering melihat ungkapan ini ("LINQ2SQL sudah mati") dan saya tidak yakin dari mana asalnya *. Itu sama seperti Windows XP yang mati. Microsoft telah menghentikan dukungan dan telah menciptakan sesuatu yang baru (dan di mata saya lebih baik) namun orang masih bebas menggunakan XP sama seperti mereka bebas menggunakan Linq2SQL. Memang, saya menggunakan Linq2SQL saat membuat modul DotNetNuke khusus. Namun, dengan fitur-fitur baru di EF4 seperti pengembangan kode pertama ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx ) sulit untuk menemukan alasan untuk tetap menggunakan Linq2SQL. Saya tidak melihat alasan untuk melanjutkan dan memperbarui kode tetapi untuk kode baru saya tidak tahu mengapa Anda tidak ingin menggunakan EF4.

* Dalam semua kejujuran, saya sangat ... obsesif terhadap semantik! Saya minta maaf jika mengganggu orang lain :)

Jetti
sumber