2010-06-14 15 views
50

Powrót pod koniec 2008 roku było dużo debaty na temat przyszłości LINQ do SQL. Wielu sugerowało, że inwestycje Microsoftu w Entity Framework w .NET 4.0 były znakiem, że LINQ do SQL nie ma przyszłości. Pomyślałem, że poczekam przed podjęciem własnej decyzji, ponieważ ludzie nie są zgodni.Czy LINQ do SQL jest przestarzałe?

Przewiń do przodu 18 miesięcy i mam dostawców oferujących rozwiązania, które opierają się na LINQ na SQL i osobiście wypróbowałem i bardzo miło z nim pracowałem. Pomyślałem, że tu zostanie.

Ale czytam nową książkę (C# 4.0 How-To autorstwa Ben Watsona) oraz w rozdziale 21 (LINQ), sugeruje on, że "została ona mniej lub bardziej przestarzała przez Microsoft" i sugeruje użycie LINQ do Entity Struktura.

Moje pytanie dotyczy tego, czy LINQ do SQL jest oficjalnie nieaktualne i czy autorytatywne jednostki (Microsoft, Scott Gu itp.) Oficjalnie sugerują używanie LINQ do jednostek zamiast LINQ do SQL.

+3

+1 Byłem jednym z ludzi, którzy wierzyli, że zostanie zaniechany i był smutny. Podoba mi się również. – jsmith

+0

Jeśli nadal jest w pełni obsługiwany, ale nie jest bardzo rozszerzany, czy oznacza to, że powinienem przełączyć się na coś innego? Co byłoby dobrego w użyciu zamiast tego? – BigOmega

Odpowiedz

58

Dla wszystkich "martwych LINQ-SQL jest" ludzi: sam Scott Guthrie wyraźnie wymienione na TechEd Europe że Linq-SQL jest pełni obsługiwane w .NET 4, a Damien Gwardii napisali blog post na co zmiany i ulepszenia zostały dokonane na LINQ-SQL w .NET 4.

Cytując Marka Twaina: „Doniesienia o mojej śmierci były mocno przesadzone” ......

+7

Dodaj do tego, co powiedział Hejlsberg w wywiadzie dla Redmond Dev News: _ "LINQ to SQL nie jest martwy, mogę cię zapewnić, że to nie jest martwe Nic nigdy nie zniknie." Nigdy tego nie robiliśmy i nigdy tego nie zrobimy. http://reddevnews.com/blogs/desmond-file/2008/12/digital-darwinism.aspx – KristoferA

+2

Chociaż nie jest martwy ani umiera, jest przestarzały. To jest główne pytanie. Istnieją artykuły od firmy Microsoft, które mówią, że ruch polega na wypychaniu ich flagowego ORM-EF. L2S jest w pełni obsługiwany i ma kluczowe znaczenie dla każdego, kto pozna/nauczy się ... jednak jego uwaga rzeczywiście się zmieniła, podobnie jak silverlight/html5 i mvc/formularze internetowe. Żadna z poprzednich technologii nie jest "martwa", po prostu nie posuwa się naprzód w tym samym tempie lub kierunku, co inne rzeczy. Przestarzałe może być trochę mocne, ponieważ oznaczałoby to, że ostatecznie nie będzie obsługiwane lub mocno odrzucone. –

+3

to, co powiedział Hejlsberg, jest z natury fałszywym stwierdzeniem, że rzeczy się zmieniają, a one znikają, a Windows 3.1 nadal będzie wspierany. 1.1 będzie oficjalnie wspierany na serwerze 2008, a Microsoft nadal będzie obsługiwał żelazne języki i jak powiedział tom dead! przestarzały, jest nadal w użyciu i wspierany, ale nie jest już aktywnie rozwijany, radziłbym utrzymywać twoje wsparcie dla linq do sql active, ale zacząć posuwać się naprzód w pracy nad ramkami podmiotu dla obecnego i przyszłego rozwoju –

8

Nie, nie jest. Zespół nadal pracuje nad jego poprawą.

4

Upewnij się, aby mieć spojrzenie na this article umieszczone na stronie InfoQ.com - to naprawdę ciekawa sprawa. Jego konkluzja: "W dłuższej perspektywie połączenie LINQ z SQL i LINQ z Entities będzie się łączyć, w międzyczasie prace programistyczne nad LINQ do SQL nie zakończą się całkowicie."

0

Domyślam się, że to nieuniknione, że się połączą. EF jest naprawdę implementacją LINQ na poziomie przedsiębiorstwa dla obiektów db. linq2sql było dla wszystkich zamiarów dowodem koncepcji (i wiele więcej), która faktycznie wyrosła na nogi, ale podsyciła wiele pomysłów, które teraz widzimy w EF. na koniec dnia warstwa DAL (nhibernate, EF, l2s, subsonic itp.) powinna znajdować się dość daleko w łańcuchu, aby negować jakiekolwiek różnice w kodzie BO klienta, który implikuje usługę LINQ - hot swappable będzie końcem gra przez DI.

12

Ostatnio sprawdziłem, ta strona używa (lub używała) Linq To SQL. Joel Spolsky wspomina o tym w swoim GoogleTechTalk: http://www.youtube.com/watch?v=NWHfY_lvKIQ.

Mówiąc o oprogramowaniu, "martwy" jest przenośnym modyfikatorem (oprogramowanie nie umiera w sensie dosłownym, biologicznym), więc debata może trwać tak długo, jak zaangażowane strony nie będą w stanie zdefiniować w dosłownym znaczeniu tego, co to znaczy dla "Linq To Die". Lub LTD w skrócie. W związku z tym od tego momentu debata w sprawie LTD trwa dłużej niż dwa lata. Wszystko z powodu małej językowej niejednoznaczności.

Ci, którzy twierdzą, że "L2S nie żyje" ogólnie odnoszą się do faktu, że L2S nie otrzyma zbyt wielu (jeśli w ogóle) nowych funkcji. Aktualizacje Linq (takie jak aktualizacje wymienione w Damien Guard's post) będą prawdopodobnie ograniczone do aktualizacji wydajności, użyteczności i stabilności. Oczywiście, niektórzy programiści mogą rzeczywiście twierdzić, że jest to dobra rzecz (prawdopodobnie ci sami programiści, którzy są nieco źli w stosunku do new dynamic type).

Ci, którzy twierdzą, że "L2S nie jest martwy" ogólnie odnoszą się do faktu, że L2S nie zostanie całkowicie odcięty od .Net (przynajmniej w najbliższym czasie). Pomyśl: ADO.Może stracić część swojej trakcji wśród praktykujących programistów (i może to być niewypowiedziane pragnienie tych sprytnych ludzi w Microsoft), ale to nie znaczy, że nie będziesz w stanie używać L2S, jeśli chcesz. Oznacza to po prostu, że Microsoft nie próbuje zmylić mas.

Uważam, że kiedy zaczynam projekt, to świetnie, że mam wybór między EF a L2S. Jako Bill Wagner points out , jest czas i miejsce dla obu.

8

Jestem spóźniony do tej dyskusji, ale chciałem podkreślić, że już w 2008 roku Link do SQL Project Manager (Tim Mallalieu) złożył tę zapowiedź w Jego blog post,

„Od .NET 4.0, LINQ to Entities [a nie LINQ to SQL] będzie zalecanym rozwiązaniem dostępu do danych LINQ do relacyjnych scenariuszy. "

Nie znalazłem żadnej innej nowszej zapowiedzi, że jest inaczej.