LINQ to SQL Dead or Alive mı?


95

LINQ to SQL ile arkadaş edindiğimde, MS halıyı altından çekiyormuş gibi görünüyor.

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

Benim küçük araştırmalarıma göre, EF basit işler için fazlasıyla abartılı. Ancak bu duyurudan sonra LINQ to SQL kullanmaya devam etmenin bir anlamı var mı?

LINQ to SQL için geleceğin ötesinde, bu genellikle kötü bir sinyal göndermez mi? MS'nin duvara bit atma hızı göz önüne alındığında, yeni bitlerden herhangi birini erken kullanmak mantıklı mı? (ve bu nazikçe, LINQ to SQL için pek erken değil!).

LINQ to SQL çalışmam için SubSonic'e gidiyorum!

Güncelleme: Birkaç yeni fikir:

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


Bu duyurudaki hiçbir şey LINQ veya LINQ to SQL'in kullanımdan kaldırılmasıyla ilgili bir şey söylemedi ...
Codewerks

5
@AugustLights Sanırım duyuruda "LINQ to SQL'i kaldırmayacağız, ancak bunu EF üzerinden tamamen görmezden
geleceğiz

Jon - Ben de öyle okudum. Duyuru, "... Entity Framework, LINQ için ilişkisel senaryolara yönelik önerilen veri erişim çözümümüz olacaktır." Bu veda anlamına gelir, LINQ'dan SQL'e.
rp.

4
MFC ölmedi, tercih edilen çözüm değil. Hala MFC'yi kodluyor musunuz? VB6 hala destekleniyor, bunu kodluyor musunuz? Her zaman böyledir, MS sizin istediğinizi değil, ne istiyorsa onu yapar.
gbjbaanb

1
@rp: DOA'da ne demek istediniz - Dead or Aliveveya Dead on arrival?
abatishchev

Yanıtlar:


64

1) Linq-to-SQL zaten .net çerçevesinin bir parçası olduğundan "öldüremezler". Yapabilecekleri, ona özellik eklemeyi bırakmaktır. Bu, halihazırda L2S kullanan binlerce geliştiricinin onu genişletmesini ve geliştirmesini engellemez. Bazı temel alanlara dokunmak zordur, ancak zaten sağlamdır ve eksik tasarımcı özellikleri kolayca vidalanabilir .

2) PDC EF oturumlarından biri , EFv1 fiyaskosundan birkaç ders öğrendiklerini ve şimdi L2S'deki pek çok güzelliği EF'ye kopyalayıp yapıştırdıklarını ve yeni bir EF işimiş gibi yaptıklarını gösteriyor. Başka bir deyişle, L2S sürüm iki, EF "yeniden etiketlendi".

3) LINQ (Language Integrated Query), dilimlenmiş dondurmadan beri en iyi şeydir ve L2S'den başka birçok şeyle kullanılabilir (Linq'den nesnelere, Linq'den varlıklara, Linq'den XML'e, Linq'den her şeye ). Dolayısıyla, DP grubunun [geniş kitleleri] L2S'yi benimseyenleri [daha az popüler olan ve şu anda kusurlu olan] Entity Framework'e zorlama girişimi, Linq'i öğrenmemek için bir neden değildir.

Ayrıca bu konuya bakın (Tim'in blog gönderisini kısmen tetiklediğine inanıyorum): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Güncelleme 1: Roger Jennings tarafından yazılan Visual Studio Magazine kapak hikayesinin Aralık 2008 sayısı, bazı L2S ve EF karşılaştırmalarıyla konu hakkında iyi bir okuma: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Güncelleme 2: Anders Hejlsberg, Redmond Developer News'te " LINQ to SQL ölmedi. Sizi temin ederim, ölmedi. Hiçbir şey asla kaybolmaz. Bunu asla yapmadık ve asla yapmayacağız. "

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


14
StackOverflow'un yaratıcıları, tercih ettikleri ORM olarak Linq to SQL'i benimsedi. Görünüşe göre faydaların tehlikelerden daha ağır bastığına karar vermişler.
Robert Harvey

Bu hala doğru mu? StackOverflow'un L2S'den uzaklaştığını ancak bu bilgiyi bulamadığını duydum.
Aaron

2
@Aaron, evet, Dapper adlı kendi mikro ORM'leri ile elle yazılmış SQL kullanıyorlar. Sitenin daha az popüler bölümlerinde yine de LINQ-to-SQL kullanabilirler.
CMircea

28

Sorunuzda çözülmesi gereken bir belirsizlik var.

LINQ! = LINQ'dan SQL'e

Pek çok LINQ teknolojisi ve sağlayıcısı vardır:

  • Linq'den SQL'e;
  • Varlıklara Bağlantı;
  • Nesnelere İlişki;
  • Linq'den XML'e;

... ve bunlar yalnızca Microsoft'tan olanlardır. NHibernate dahil MS dışı sağlayıcılar da vardır.

Bağlandığınız blog yazısı sadece Linq to SQL hakkında konuşuyor.

LINQ'nun en önemli avantajı, bir sorgu sözdizimini öğrenip kullanabilmeniz ve birden çok teknolojide yeniden kullanabilmenizdir.

Bunu göz önünde bulundurarak, LINQ Sorgularını yazarken kazandığınız beceriler gelecekte diğer araçlara aktarılacağından, "Linq To SQL" için herhangi bir geleceğe ilişkin algılanan eksikliğin alakasız olduğunu öneririm.


LINQ 2 SQL sözdizimi, ikisi arasında oldukça kolay bir şekilde yürüyebileceğiniz Entity Framework'e yeterince benzer.
Jason Short

LINQ to SQL'in gerçek uygulamasının SQL Server'a karşı çalışan bazı özel avantajları olduğu için sorusu hala geçerlidir.
Tor Haugen

21

LINQ to SQL'i öldürmeyeceğiz. EF için optimize ediyoruz ancak LINQ to SQL kesinlikle kapatılmıyor :)

- Scott / Microsoft.


Lol. bu beni çıldırtıyor. bu basın açıklamasını yapmak için Microsoft'tan onay almanız gerekiyor mu? : p
Kolob Canyon

eh? 2009'da bu, söz konusu ekibin çuvalladığı bir mesajdı, bu yüzden düzeltmek zorunda kaldım ... .net ürün müdürü olarak: D
Scott Barnes

13

Sadece Linq (System.Linq.Enumerable ve System.Linq.Queryable) öğrenmekle kalmaz, aynı zamanda .net diliniz için programlama dili geliştirmelerini de öğrenmeniz gerekir.

C # 3.0'da bunlar şunları içerir:

  • Uzantı yöntemleri (ilk parametrede this anahtar kelimesi ile statik yöntemler)
  • Derleyici çıkarsama türleri (var)
  • Lambda sözdizimi (bağlama bağlı olarak anonim bir yöntem veya İfade oluşturur)
  • Başlatıcılar
  • Özellik varsayılan uygulaması (bir kısaltma)

Daha fazlasını buradan okuyun .


VB 9.0'da bazı satır içi XML sihri ve daha birçok şey vardır (çoğu C # için yukarıdaki listeye benzer).

Daha fazlasını buradan okuyun .


Vay canına, gerçekten gerçek bir gün geçiriyor olmalıyım. Sadece soru olan cümlenin gerçekten sıkı bir bağlam dışı yorumuyla - cevabım mantıklı bile geliyor.
Amy B

@David B, evet .. Ben gibiydim, bu iyi bir cevap, sadece bu soruyu nasıl cevapladığını anlamıyorum. lol
mmcdole

1
Olumlu oylar almaya devam ediyor. Sanırım bazı insanların sadece bağlantılardaki bilgileri görmesi gerekiyor ... Bu cevabı beğendiyseniz, daha iyi cevabımı şurada isteyebilirsiniz: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B

8

Dürüst olmak gerekirse, o makalenin neresinde link2sql'nin öldüğünü okuduğunuzu anlamıyorum.

Ona bağladığınız blog gönderisinde şöyle diyor:

LINQ to SQL ile ilgili müşterileri dinliyoruz ve ayrıca topluluktan aldığımız geri bildirimlere göre ürünü geliştirmeye devam edeceğiz.

Benim için bu, LINQ to SQL'in gelecekte geliştirilip destekleneceği gibi okur. Acaba neden öldüğünü düşünüyorsun?


7

Verildiğine göre, burada LINQ'dan SQL'e, LINQ'dan Varlıklara ve LINQ'dan [3. Taraf ORM'yi ekleyin] arasındaki seçimin, bir yazılım geliştiricisinin aralarından seçim yapabileceği mükemmel sağlıklı bir veri erişim katmanı metodolojileri eko sistemi sağladığını düşünüyorum. NHibernate, LLBLGen ve hatta Subsonic gibi üçüncü taraf sağlayıcılar (LINQ sağlayıcıları sunacaklarından emin değiller) kesinlikle rekabeti daha iyi ve daha ilginç hale getirecektir.

Bununla birlikte, Microsoft'un LINQ'dan SQL'e vazgeçmesi tamamen üzücü olacaktır, özellikle de iyi bir takipçiye sahip olduğu için - StackOverflow bile bunun üzerine inşa edilmiştir.


6

Bununla ilgili ilginç bir blog yazısı. Ve Stackoverflow gönderileriyle ilgili bazı bilgiler .

Temel öz , Visual Studio 2010 ve Dot Net 4 için en büyük geliştirici zamanını alan tek şeyin Entity Framework olduğunu belirten ado.net blogunda yapılan yorumlar gibi görünüyor .

Cevabım - DUH. Bunu hepimiz biliyoruz. Microsoft, PDC 2007'de, LINQ to SQL'in SQL Server için kısa vadeli bir sürüm olduğunu çünkü SQL Server için başka LINQ hikayesi olmadığını söyledi. Yalnızca SQL Server ile çalışır. LINQ to SQL sağlayıcısı yazamazsınız - bunun için bir model yoktur. Genişletilebilir değil, tek seferlik bir teknolojiydi.

Entity Framework, Microsoft'tan LINQ Sağlayıcısı oluşturmanın YALNIZCA yoludur. Entity Framework oldukça tartışmalı hale geldi, ancak bunun kısmen LINQ to SQL'in bugün daha iyi bir programcı deneyimine sahip olmasından kaynaklandığını düşünüyorum. Entity Framework, Microsoft'tan geleceğin ORM / Mapping aracı olduğu için LINQ to SQL'i yakalayacak ve geçecektir.

DÜZENLE - Blogumda bununla ilgili biraz daha ayrıntılı bir yazı yazdım

EDIT2 - IQueryable Provider - LINQ to SQL sağlayıcısı ile aynı şey DEĞİLDİR. İstediğiniz her şey için kendi IQueryable Sağlayıcınızı yazabilirsiniz. Tasarımcı desteği veya model üretimi almazsınız. LINQ ile SQL model oluşturma arasında bağlantı kurmak için bildiğim hiçbir gui tasarımcısı modeli yok.


1
Re .: "LINQ to SQL sağlayıcısına yazamazsınız - bunun için bir model yoktur." Pekala, işte olduğunu . Sadece EF'e avantaj sağlamak için gerekli üyeleri son dakikada özel yapmaya karar verdiler. Blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA

1

Teşekkürler - o yazıyı okumamıştım. Dahili olarak bir API olduğunu biliyordum, ancak bunun kamuya açık olup olmadığını bilmiyordum.
Jason Short

1
Aynı blog ( blogs.msdn.com/mattwar ) ayrıca sağlayıcıların nasıl yazılacağına dair eksiksiz bir makale serisine (örneklerle) ve yararlı bulabileceğiniz, takılabilir indirilebilir bir L2S sağlayıcısına sahiptir.
KristoferA

Hackleyebilmeniz önemli değil - resmi olarak MS tarafından DESTEKLENMEZ. Bunun için VSIP entegrasyonunuz YOKTUR. Uygulamanız için bir logo alamazsınız ...
Jason Short

5

Sanırım burada problemi gerçekten görmüyorum. Bağladığınız makaleden:

LINQ to SQL ile ilgili müşterileri dinliyoruz ve ayrıca topluluktan aldığımız geri bildirimlere göre ürünü geliştirmeye devam edeceğiz.

Bir şey mi kaçırıyorum? LINQ to SQL'in ulaşıldığında öldüğü izlenimini veren nedir?



4

VB6'yı hatırlayan var mı? İster kişisel olarak nefret edin ister sevin, Microsoft milyonlarca kopya sattı ve işletmeler milyonlarca satır VB6 yazmak için milyonlarca dolar harcadı. Sonra ne oldu?

Bu yüzden sadece bu dersi bir düşünün. Bana göre LinqToSQL desteği oldukça isteksiz olacak gibi görünüyor. Onlar edilir yükümlü geçerli .NET framework olduğundan bunu destekleyecek. Ama .NET 5, 6, 7'de olacak mı? Bunun senin için ne kadar önemli olduğunu bir düşün (tüm bildiğim, senin için hiç önemli değil).


benim için en iyisi OracleConnection ve SqlConnection ile saf ado.net çünkü bu sağlayıcılar ve System.Data.DataSet asla ölmez. Tablo verilerinin temelidir. Kişisel ben EF'i seviyorum ama profesyonel DataSet standart olmaya devam ediyor.
pedrofernandes

3

Belki Linq'den SQL'e öğrenmeye zahmet etmemelisiniz, ama yine de tutacakları Varlıklar Linq var.


1
Mevcut EF yaklaşımının, en azından zorunlu temel sınıf değil, bazı ciddi sorunları vardır. EFvNext'in bazı yerlerde oldukça farklı görünmesini beklerdim; o zamana kadar, en basit seçeneği kullanmanızı tavsiye ederim: L2S - veya nHibernate ;-p
Marc Gravell

1
LINQ hakkında kafa yorduğunuzda, LINQ to SQL "öğrenmenin" oldukça önemsiz olduğunu öneririm. Bu sadece projenize LINQ to SQL sınıfları öğesi eklemek ve birkaç tabloyu tasarımcıya sürükleyip bırakmaktır.
Richard Ev


3

Microsoft'un araç kutusunda 2 ORM'nin bire bir olduğu aşikar, ancak bana göre, tüm yanlış nedenlerden dolayı yanlış çerçeve seçilmiştir. C # ekibinin ADO.NET ekibinin yapması gereken işi çok daha kısa sürede yapması ve işi daha iyi yapması, ado.net ekibi için yutması zor. 2 çerçevenin dahili işleyişini bildiğimden değil, ancak linq2sql'nin varlık çerçevesine sahip olduğu eksiklikleri yükseltmenin çok daha hızlı olacağını düşünüyorum.

Görünüşe göre çok fazla siyaset var ve bunun asp.net itibarına gerçekten zarar vereceğini düşünüyorum, çünkü Varlık çerçevesinin bize Linq2sql kadar kullanıcı dostu bir deneyim sunacağına hiç güvenmiyorum. Ado.net ekibi, sorunla ilgili açıklamalar en iyi ihtimalle belirsiz olduğundan, asp.net mvc ekibinden bazı iletişim becerileri de öğrenebilir.

Örneklerinin çoğu Linq2Sql kullandığı için Scott Gu ve MVC ekibinin burada ne durduğunu öğrenmek eğlenceli olurdu.


2

Linq 2 Sql ve Entity Framework ile büyük örtüşme alanları olması her zaman biraz tuhaftı. Bence L2S'nin .NET 3.5 sürümüne girmesinin tek nedeni, EF'in gün ışığını göreceğine dair büyük bir şüphe olmasıydı. Artık EF1 çıktı, hepsi çok zor bir v1 olsa da, artık L2S'ye gerek yoktu.


2

(hayır, StingyJack, LINQ to SQL varlık çerçevesini kullanmaz)

Her neyse, endişelenmem. Tim, LINQ to SQL ile ilgili müşterileri dinlediklerini belirtir. L2S için gördüğüm coşkudan yola çıkarak, müşteriler (bu biziz) akıllarını konuşacak.

Ve KristoferA'nın da işaret ettiği gibi, aslında L2S'yi 'öldüremezler', sadece dondururlar. Ve L2S, bir kez cilalandığında, gerçekten çok fazla geliştirme gerektirmez. L2S sağlayıcısı mevcut olduğunda, LINQ'daki herhangi bir ilerleme L2S'de de mevcut olmalıdır. Yani seçim yine bizim olacak.


Yan yana kurulum olması gereken Dot Net 4'e dahil etmeyerek onu öldürebilirler. Bu, dot net 4 uygulamalarının aynı makineye 3.5SP1 yüklemeden ona erişemeyeceği anlamına gelir - bunun doğru olup olmadığını bilmeyin.
Jason Short

VB6'yı hatırlayan var mı? Microsoft hala VB6'yı (tür) desteklemektedir. Şu anda bile VB6 müşterilerini dinlediklerini söylüyorlar. Ama mutlu muyuz? Hayır. Kodumuzu değiştirme teknolojisi olan VB.Net'e ulaştırmak için kullanılan yükseltme yolları pahalıdır. Bu yüzden sadece şu dersi bir düşünün: LinqToSQL'in .NET 4, 5, 6'da olup olmayacağını ve bunun sizin için ne kadar önemli olduğunu düşünün.
MarkJ

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.