Öncelikle, yeni bir projeye başlıyorsanız, Entity Framework ("EF") ile devam edin - artık çok daha iyi SQL üretir (Linq to SQL gibi) ve Linq to SQL'den daha kolay ve daha güçlüdür (" L2S "). .NET 4.0'ın piyasaya sunulmasından itibaren, Linq to SQL'i eski bir teknoloji olarak görüyorum. MS, L2S gelişimini daha fazla sürdürmeme konusunda çok açıktı.
1) Performans
Cevaplamak zor. Çoğu tek varlıklı işlem ( CRUD ) için, üç teknolojinin tamamında neredeyse eşdeğer bir performans bulacaksınız. EF ve Linq to SQL'in tam olarak kullanılabilmesi için nasıl çalıştığını bilmek zorundasınız. Yoklama sorguları gibi yüksek hacimli işlemler için, EF / L2S'nin varlık sorgunuzu çerçevenin sürekli olarak SQL'i yeniden oluşturmak zorunda kalmayacağı veya ölçeklenebilirlik sorunlarıyla karşılaşabileceği şekilde "derlemesini" isteyebilirsiniz. (düzenlemelere bakın)
Çok miktarda veri güncellediğiniz toplu güncellemeler için, ham SQL veya saklı bir prosedür her zaman bir ORM çözümünden daha iyi performans gösterecektir, çünkü güncellemeleri gerçekleştirmek için kablo üzerinden veriyi ORM'ye marshallemek zorunda kalmazsınız.
2) Geliştirme Hızı
Çoğu senaryoda EF, geliştirme hızı söz konusu olduğunda çıplak SQL / depolanmış proc'ları patlatacaktır. EF tasarımcısı, modelinizi değiştikçe veritabanınızdan güncelleyebilir (istek üzerine), böylece nesne kodunuz ve veritabanı kodunuz arasında senkronizasyon sorunlarıyla karşılaşmazsınız. Bir ORM kullanmayı düşünmediğim tek zaman, güncelleme yapmadığınız bir raporlama / pano tipi uygulama yaptığınızda veya sadece bir veritabanında ham veri bakım işlemleri yapmak için bir uygulama oluştururken.
3) Düzenli / Sürdürülebilir kod
Eller aşağı, EF SQL / sprocs'u yener. İlişkileriniz modellenmiş olduğundan, kodunuzdaki birleştirmeler nispeten nadirdir. Varlıkların ilişkileri, çoğu sorgu için okuyucu için neredeyse açıktır. Verilerinize gerçekte ne olduğunu anlamak için katmandan katmana hata ayıklamaya veya birden çok SQL / orta katmana gitmek zorunda kalmaktan daha kötü bir şey yoktur. EF, veri modelinizi çok güçlü bir şekilde kodunuza getirir.
4) Esneklik
Kayıtlı işlemler ve ham SQL daha "esnektir". Tek özel durum için daha hızlı sorgular oluşturmak için sprocs ve SQL'den yararlanabilirsiniz ve yerel DB işlevlerinden ve ORM'den daha kolay yararlanabilirsiniz.
5) Genel
Saklı yordamları kullanarak bir ORM seçmenin yanlış ikilemine kapılmayın. Her ikisini de aynı uygulamada kullanabilirsiniz ve muhtemelen kullanmalısınız. Büyük toplu işlemler saklı yordamlarda veya SQL'de (aslında EF tarafından çağrılabilir) yapılmalıdır ve EF, CRUD işlemleriniz ve orta katman gereksinimlerinizin çoğunda kullanılmalıdır. Belki de raporlarınızı yazmak için SQL kullanmayı tercih edersiniz. Sanırım hikayenin ahlaki her zamanki gibi. İş için doğru aracı kullanın. Ama sıska, EF bugünlerde çok iyi (.NET 4.0'dan itibaren). Bunu okumak ve anlamak için gerçek zamanlı biraz zaman harcayın ve kolayca şaşırtıcı, yüksek performanslı uygulamalar oluşturabilirsiniz.
DÜZENLEME : EF 5, otomatik derlenmiş LINQ Sorguları ile bu bölümü biraz basitleştirir , ancak gerçek yüksek hacimli şeyler için, gerçek dünyada sizin için en uygun olanı kesinlikle test etmeniz ve analiz etmeniz gerekir.