Pertama, jika Anda memulai proyek baru, gunakan Entity Framework ("EF") - sekarang menghasilkan SQL yang jauh lebih baik (lebih seperti Linq ke SQL) dan lebih mudah untuk mempertahankan dan lebih kuat daripada Linq ke SQL (" L2S "). Pada rilis. NET 4.0, saya menganggap Linq to SQL sebagai teknologi yang usang. MS sangat terbuka untuk tidak melanjutkan pengembangan L2S lebih lanjut.
1) Kinerja
Ini sulit dijawab. Untuk sebagian besar operasi entitas tunggal ( CRUD ), Anda akan menemukan kinerja yang setara dengan ketiga teknologi. Anda harus tahu cara kerja EF dan Linq to SQL untuk menggunakannya secara maksimal. Untuk operasi volume tinggi seperti kueri pemungutan suara, Anda mungkin ingin EF / L2S "mengkompilasi" kueri entitas Anda sedemikian rupa sehingga kerangka kerja tidak harus terus-menerus membuat ulang SQL, atau Anda dapat mengalami masalah skalabilitas. (lihat hasil edit)
Untuk pembaruan massal di mana Anda memperbarui data dalam jumlah besar, SQL mentah atau prosedur tersimpan akan selalu berkinerja lebih baik daripada solusi ORM karena Anda tidak harus menyusun data melalui kawat ke ORM untuk melakukan pembaruan.
2) Kecepatan Pengembangan
Dalam sebagian besar skenario, EF akan menerbangkan SQL / procs tersimpan telanjang ketika datang ke kecepatan pengembangan. Perancang EF dapat memperbarui model Anda dari basis data saat ia berubah (atas permintaan), sehingga Anda tidak mengalami masalah sinkronisasi antara kode objek dan kode basis data Anda. Satu-satunya waktu saya tidak akan mempertimbangkan menggunakan ORM adalah ketika Anda sedang melakukan aplikasi tipe pelaporan / dashboard di mana Anda tidak melakukan pembaruan, atau ketika Anda membuat aplikasi hanya untuk melakukan operasi pemeliharaan data mentah pada database.
3) Kode rapi / Maintainable
Hands down, EF mengalahkan SQL / sprocs. Karena hubungan Anda dimodelkan, bergabung dalam kode Anda relatif jarang. Hubungan entitas hampir jelas bagi pembaca untuk sebagian besar pertanyaan. Tidak ada yang lebih buruk daripada harus beralih dari tingkat ke tingkat debugging atau melalui beberapa SQL / tingkat menengah untuk memahami apa yang sebenarnya terjadi pada data Anda. EF membawa model data Anda ke dalam kode Anda dengan cara yang sangat kuat.
4) Fleksibilitas
Procs yang disimpan dan SQL mentah lebih "fleksibel". Anda dapat memanfaatkan sprocs dan SQL untuk menghasilkan kueri yang lebih cepat untuk kasus spesifik yang aneh, dan Anda dapat memanfaatkan fungsionalitas DB asli lebih mudah daripada dengan ORM.
5) Secara keseluruhan
Jangan terjebak dalam dikotomi keliru dalam memilih ORM vs menggunakan prosedur tersimpan. Anda dapat menggunakan keduanya dalam aplikasi yang sama, dan Anda mungkin harus melakukannya. Operasi massal besar harus menggunakan prosedur tersimpan atau SQL (yang sebenarnya bisa disebut oleh EF), dan EF harus digunakan untuk operasi CRUD Anda dan sebagian besar kebutuhan tingkat menengah Anda. Mungkin Anda akan memilih untuk menggunakan SQL untuk menulis laporan Anda. Saya kira moral ceritanya sama seperti sebelumnya. Gunakan alat yang tepat untuk pekerjaan itu. Tetapi kurusnya, EF sangat bagus saat ini (pada. NET 4.0). Habiskan waktu nyata membaca dan memahaminya secara mendalam dan Anda dapat membuat beberapa aplikasi luar biasa, berkinerja tinggi dengan mudah.
EDIT : EF 5 menyederhanakan bagian ini sedikit dengan Kueri LINQ yang dikompilasi otomatis , tetapi untuk hal-hal bervolume tinggi nyata, Anda pasti perlu menguji dan menganalisis apa yang paling cocok untuk Anda di dunia nyata.