2010-04-23 18 views
17

Linq-To-Sql'nin göreceli sadeliği ve Entity Framework'ün 1. versiyonunda (özellikle, the vote of no confidence) belirtilen tüm eleştiriler beni "şimdilik" Linq-To-Sql ile devam ettirmeye ikna etti. Şimdi EF 4.0 çıktı, ben bunun üzerine göç etmeye başlama zamanı olup olmadığını merak ediyorum.Linq-To-Sql'yi şimdi Entity Framework 4.0'ı serbest bıraktı mı?

Sorular:

  1. Ne EF 4.0 artı ve eksileri Linq-To-Sql göredir?
  2. EF 4.0 nihayet ilk kez hazır mı?
  3. Şimdi geçiş yapma zamanı mı?
+0

Neden bu ikisinden biri olmalı? Niçin NHibernate, Subsonic, vb? –

+3

@mgroves, .NET çerçevesine yerleşik teknolojiye odaklanıyordum, ama haklısınız, kesinlikle iyi ya da daha iyi olabilecek başka teknolojiler var. – devuxer

+0

Microsoft'un ORM paketlerini IDE ile entegre etmesini seviyorum. Açık kaynak projeleri de bunu yapma eğilimindedir. –

cevap

18

Eh,

:-) sonsuz tartışma Evet, sıkıca EF4'ü kesinlikle prime time için hazır olduğuna inanıyoruz - Microsoft 1.0 sürümü ile hemen hemen tüm sıkıntılar ve konuların ele olağanüstü bir iş çıkarmış EF

Tüm özelliklerine ihtiyacınız varsa - asal zamanı için hazır.

Linq-to-SQL oldukça basit, no-frills, no-nonsense VEYA mapper - bir veritabanı tablosunu bir CLR nesnesine eşler - ve bu konuda. Çok basit, çok doğrudan - ama SQL Server'ın üstünde oldukça ince bir tabaka. Öte yandan

EF4'ü fazlasıdır

  • senin nesne uzayda kavramsal veri modeli
  • veritabanı katman üzerinde bir depolama veri modeli
  • iki
  • veritabanı arasında bir eşleme katmanı - bağımsız

Gerçekten birden çok veritabanına (ve yalnızca SQL Server'a değil) yönelik desteğe ihtiyacınız varsa veya Gerçekten veritabanı yapısını tamamen farklı bir nesne modeline dönüştürebilmek gerekiyor - EF4, başlamak için harika bir yerdir.

Kolay ve hızlı bir şekilde tablo 1: 1 tabloları eşleştirmek mümkün olması gereken basit ve basit küçük ve orta ölçekli bir uygulama varsa, o zaman EF4 basitlik açısından bile yakın geleceğini sanmıyorum ve Linq'den SQL'e performans.

EF4 harika - ve gücüne ihtiyacınız varsa - onunla geçin!

Ancak, gereksinimleriniz çok daha azsa, bu yalnızca aşırı olabilir - Linq-to-SQL kullanmaya devam edeceğim (bundan sonra). Ben Linq-to-SQL dökmek için iyi bir neden görmüyorum - hala tamamen .NET 4'te kullanılabilir, hatta bazı bug fixes and improvements ile kutsanmış ve en az birkaç yıl için etrafında olacak.

+0

Teşekkürler, İşaretle, +1. Genellikle özetlediğiniz basit senaryolarla çalışırım, bu yüzden cevabınız bana daha karmaşık gereksinimlerim olana kadar Linq-To-Sql ile yapmam gerektiğine inanıyor. – devuxer

+0

Birden fazla veri tabanından bahsettiğinizde, bunun mysql yapabileceğini mi söylüyorsunuz ya da bir EF'e bağlanmış farklı türde veritabanlarına ihtiyacınız olup olmadığını mı söylüyorsunuz? Ayrıca neden EF4 olarak adlandırılıyor ve EF2.0 değil, oldukça aptal bir adlandırma kuralı gibi görünüyor. Sonunda, daha basit şeylere gitme noktanızı görüyorum ama gereklilikler her zaman değiştiği için EF ile gitmesi daha güvenli olmazdı ve bugünkü özelliklere ihtiyacınız olmayabilir ama 2 sene ihtiyaç duyabiliyorsunuz ve sonra geçiş yapmak zorunda kalacaksınız. tüm veritabanı katmanı dışarı? – chobo2

+1

@ chobo2: EF4'ün birden fazla veritabanını destekleyebileceğini kastediyorum; SQL Server'a, IBM DB2'ye, MySQL'e ve birkaç tane daha bağlanabilirsiniz. Bunları bir kerede kullanmak isterseniz, birden çok ObjectContexts tablonuz olmalıdır - tek bir ObjectContext'te birkaç veritabanını karıştıramazsınız. EF4 olarak adlandırıldı çünkü .NET 4 zaman diliminde yayınlandı - ancak bu sadece pazarlama konusudur. Evet, şimdi EF4 ile gitmek için "daha güvenli" olabilir - ama şimdi söylüyorum, şimdilik, birçok durumda, EF4 bir overkill olacak ve performans açısından sizi incitecek ve karmaşıklığı nedeniyle daha fazla baş ağrısına neden olacak –

0

@marc_s, @DanM:

bir reklam olarak bu yayını düşünmüyoruz Lütfen :) Biz sadece Sql Linq gelişmiş kullanıcılar görüşünü bilmek istiyorum.

Biz şu değişimler gerçekleştirdik bizim LinqConnect (SQL Server, Oracle, MySQL, PostgreSQL, SQLite için Linq): Biz de ikinci düzey önbelleği için destek eklemeyi planlıyoruz

- Complex Type 
- Many to Many 
- Batch update operations 
- Recursive support in DataLoad options 
- Query level preload (like Include in EF) 
- TPT support (in LinqConnect 2.0) 

.

Bu gelişmeler sizin için değerli mi?

+3

"Lütfen bunu bir reklam olarak düşünmeyin, ama işte bizim için bir reklam ..." Güzel deneme. – Zannjaminderson