LINQ to SQL là Dead or Alive?


95

Ngay khi tôi kết bạn với LINQ to SQL, có vẻ như MS đang kéo tấm thảm ra khỏi nó.

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

Từ nghiên cứu nhỏ của tôi, EF là quá mức cần thiết cho công việc đơn giản. Nhưng sau thông báo này, có lý do gì để tiếp tục sử dụng LINQ to SQL?

Ngoài tương lai cho LINQ to SQL, điều này không chỉ nói chung gửi một tín hiệu xấu sao? Với tốc độ mà MS đang ném các bit vào tường, liệu có hợp lý để sử dụng bất kỳ bit mới nào sớm không? (và điều đó thật tốt, không còn sớm cho LINQ to SQL!).

Đối với công việc LINQ to SQL của tôi, tôi nghĩ rằng tôi đang hướng tới SubSonic!

Cập nhật: Một vài ý kiến ​​mới:

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


Không có gì trong thông báo đó nói gì về việc LINQ hoặc LINQ to SQL sẽ biến mất ...?
Codewerks 31/10/08

5
@AugustLights Tôi nghĩ rằng những gì tuyên bố nói rằng "chúng tôi sẽ không loại bỏ LINQ to SQL, nhưng chúng tôi đang rất sẽ hoàn toàn bỏ qua nó qua EF"
Jon Limjap

Jon - Đó là cách tôi đọc nó. Thông báo cho biết, "... Entity Framework sẽ là giải pháp truy cập dữ liệu được đề xuất của chúng tôi cho các kịch bản quan hệ của LINQ." Điều đó có nghĩa là tạm biệt, LINQ sang SQL.
rp.

4
MFC chưa chết, nó chỉ không phải là giải pháp ưa thích. Bạn có còn mã MFC không? VB6 vẫn được hỗ trợ, bạn có viết mã đó không? Nó luôn luôn theo cách này, MS làm những gì nó muốn, không phải những gì bạn muốn.
gbjbaanb 31/10/08

1
@rp: Ý bạn là gì theo DOA - Dead or Alivehoặc Dead on arrival?
abatishchev

Câu trả lời:


64

1) Họ không thể "giết" Linq-to-SQL vì nó đã là một phần của khung .net. Những gì họ có thể làm là ngừng thêm các tính năng vào nó. Điều đó không ngăn cản hàng ngàn nhà phát triển hiện đang sử dụng L2S ​​mở rộng và cải thiện nó. Một số khu vực cốt lõi rất khó chạm vào nhưng chúng đã chắc chắn và các tính năng của nhà thiết kế còn thiếu có thể dễ dàng được bổ sung .

2) Một trong các phiên PDC EF cho thấy rằng họ đã học được một vài bài học từ sự cố EFv1 và hiện họ đang sao chép và dán rất nhiều tính năng tốt từ L2S vào EF và giả vờ đó là những thứ EF mới. Nói cách khác, L2S phiên bản hai vừa được "gắn nhãn lại" EF.

3) LINQ như vậy (Truy vấn tích hợp ngôn ngữ) là thứ tốt nhất vì kem thái mỏng và nó có thể được sử dụng với rất nhiều thứ khác ngoài L2S (Linq tới đối tượng, Linq tới thực thể, Linq tới XML, Linq-to-anything ). Vì vậy, nỗ lực của nhóm DP để buộc [rất nhiều] những người chấp nhận L2S chuyển sang Khung thực thể [ít phổ biến hơn và hiện đang bị thiếu sót] không có lý do gì để không học Linq.

Cũng xem chủ đề này (đó là điều tôi tin rằng một phần đã kích hoạt bài đăng trên blog của Tim): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Cập nhật 1: Số tháng 12 năm 2008 của câu chuyện bìa Tạp chí Visual Studio của Roger Jennings là một bài đọc hay về chủ đề này, với một số so sánh giữa L2S và EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Cập nhật 2: Anders Hejlsberg được trích dẫn trên Redmond Developer News rằng " LINQ to SQL chưa chết. Tôi có thể đảm bảo với bạn, nó không chết. Không có gì biến mất. Chúng tôi chưa bao giờ làm điều đó và chúng tôi sẽ không bao giờ. "

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


14
Những người tạo ra StackOverflow đã thông qua Linq to SQL làm ORM lựa chọn của họ. Rõ ràng họ đã quyết định lợi ích lớn hơn nguy cơ.
Robert Harvey,

Điều này có còn đúng không? Tôi nghe nói rằng StackOverflow đã chuyển khỏi L2S nhưng dường như không thể tìm thấy thông tin này.
Aaron

2
@Aaron, vâng, họ sử dụng SQL viết tay với ORM vi mô của riêng họ được gọi là Dapper. Họ vẫn có thể sử dụng LINQ-to-SQL trên các phần ít phổ biến hơn của trang web.
CMircea

28

Có một sự mơ hồ cho câu hỏi của bạn cần được giải quyết.

LINQ! = LINQ sang SQL

Có rất nhiều công nghệ và nhà cung cấp LINQ:

  • Linq sang SQL;
  • Linq đến các thực thể;
  • Linq đến Đối tượng;
  • Linq sang XML;

... và đó chỉ là những cái của Microsoft. Cũng có những nhà cung cấp không phải MS, bao gồm NHibernate.

Bài đăng trên blog mà bạn đã liên kết chỉ nói về Linq to SQL.

Ưu điểm chính của LINQ là bạn có thể học và sử dụng một cú pháp truy vấn và sử dụng lại nó trên nhiều công nghệ.

Với điều này, tôi đề nghị rằng bất kỳ nhận thức nào về việc thiếu tương lai cho "Linq To SQL" là không phù hợp, vì các kỹ năng bạn đạt được khi viết Truy vấn LINQ sẽ có thể chuyển sang các công cụ khác trong tương lai.


Cú pháp LINQ 2 SQL tương tự như Entity Framework để bạn có thể đi lại giữa hai cách khá dễ dàng.
Jason Short

Tuy nhiên, câu hỏi của anh ấy vẫn có giá trị vì việc triển khai thực tế LINQ to SQL có một số ưu điểm cụ thể khi chống lại SQL Server.
Tor Haugen

21

Chúng tôi không giết LINQ to SQL. Chúng tôi đang tối ưu hóa cho EF, nhưng LINQ to SQL chắc chắn không bị khai tử :)

- Scott / Microsoft.


Cười lớn. điều này làm tôi đau khổ. bạn có phải được Microsoft chấp thuận để đưa ra tuyên bố công khai này không? : p
Kolob Canyon

Hở? trong năm 2009 đó là một thông điệp đội trong câu hỏi screwd lên vì vậy tôi đã phải sửa chữa nó ... là giám đốc sản phẩm của .net: D
Scott Barnes

13

Bạn không chỉ nên học Linq (System.Linq.Enumerable và System.Linq.Queryable), bạn sẽ cần học các cải tiến về ngôn ngữ lập trình cho ngôn ngữ .net của bạn.

Trong C # 3.0, chúng bao gồm:

  • Phương thức mở rộng (phương thức tĩnh với từ khóa this trên tham số đầu tiên)
  • Các kiểu suy luận của trình biên dịch (var)
  • Cú pháp Lambda (tạo ra một phương thức ẩn danh hoặc một Biểu thức tùy thuộc vào ngữ cảnh)
  • Khởi tạo
  • Triển khai mặc định thuộc tính (viết tắt)

Đọc thêm tại đây .


Trong VB 9.0 có một số phép thuật XML nội tuyến, và nhiều thứ khác (nhiều thứ tương tự như danh sách trên cho C #).

Đọc thêm tại đây .


Chà, tôi hẳn đã có một ngày thực sự đúng nghĩa. Chỉ với cách giải thích câu ngoài ngữ cảnh thực sự chặt chẽ - câu trả lời của tôi mới có ý nghĩa.
Amy B

@David B, yea .. Tôi nghĩ đây là một câu trả lời ok, tôi chỉ không biết nó trả lời câu hỏi này như thế nào. lol
mmcdole

1
Nó tiếp tục nhận được sự ủng hộ. Tôi đoán một số người chỉ cần xem thông tin trong các liên kết ... Nếu bạn thích câu trả lời này, bạn có thể thích câu trả lời hay hơn của tôi ở đây: stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B

8

Thực lòng tôi không hiểu ở đâu mà bạn đọc thấy link2sql đó là chết.

Trong bài đăng trên blog mà bạn liên kết với nó nói:

Chúng tôi đang lắng nghe khách hàng về LINQ to SQL và sẽ tiếp tục phát triển sản phẩm dựa trên phản hồi mà chúng tôi nhận được từ cộng đồng.

Đối với tôi, điều này giống như LINQ to SQL sẽ được phát triển và hỗ trợ trong tương lai. Tôi tự hỏi tại sao bạn nghĩ rằng nó đã chết?


7

Được cấp, tôi nghĩ rằng sự lựa chọn giữa LINQ to SQL, LINQ to Entities và LINQ để [chèn ORM của bên thứ 3] ở đây cung cấp một hệ thống sinh thái hoàn toàn lành mạnh về phương pháp luận lớp truy cập dữ liệu mà nhà phát triển phần mềm có thể lựa chọn. Các nhà cung cấp bên thứ ba như NHibernate, LLBLGen và thậm chí cả Subsonic (không chắc họ có cung cấp các nhà cung cấp LINQ hay không) chắc chắn sẽ làm cho cuộc cạnh tranh tốt hơn và thú vị hơn.

Điều đó đang được nói, sẽ hoàn toàn buồn cho Microsoft khi từ bỏ LINQ sang SQL, đặc biệt là vì nó có một lượng lớn - ngay cả StackOverflow cũng được xây dựng trên đó.


6

Bài đăng trên blog thú vị về nó. Và một số thông tin liên quan về bài viết trên Stackoverflow .

Ý chính cơ bản dường như là các nhận xét được thực hiện trên blog ado.net cho biết Khung thực thể là thứ duy nhất giúp các nhà phát triển dành thời gian lớn cho Visual Studio 2010 và Dot Net 4.

Câu trả lời của tôi là - DUH. Tất cả chúng ta đã biết điều này. Microsoft đã nói công khai trở lại tại PDC 2007 rằng LINQ to SQL là bản phát hành ngắn hạn cho SQL Server vì không có câu chuyện LINQ nào khác cho SQL Server. Nó chỉ hoạt động với SQL Server. Bạn không thể viết trình cung cấp LINQ to SQL - không có mô hình nào cho nó. Đó là một công nghệ duy nhất, không thể mở rộng.

Khung thực thể là cách DUY NHẤT từ Microsoft để xây dựng Nhà cung cấp LINQ. Entity Framework hóa ra khá mâu thuẫn, nhưng tôi nghĩ rằng điều đó một phần là do LINQ to SQL có trải nghiệm lập trình viên tốt hơn ngày nay. Entity Framework sẽ bắt kịp và vượt qua LINQ to SQL vì nó là công cụ ORM / Mapping của tương lai từ Microsoft.

CHỈNH SỬA - Tôi vừa viết chi tiết hơn một chút về điều này trên blog của mình

EDIT2 - IQueryable Provider - KHÔNG giống như một trình cung cấp LINQ to SQL. Bạn có thể viết Nhà cung cấp IQueryable của riêng mình cho bất kỳ thứ gì bạn thích. Bạn không nhận được sự hỗ trợ của nhà thiết kế hoặc tạo mô hình. Không có mô hình thiết kế gui nào mà tôi biết để liên kết với việc tạo mô hình LINQ to SQL.


1
V / v: "Bạn không thể viết trình cung cấp LINQ sang SQL - không có mô hình nào cho nó." Vâng, có . Chỉ là họ quyết định để các thành viên cần thiết ở chế độ riêng tư vào phút cuối để tạo lợi thế cho EF. Xem blog.msdn.com/mattwar/archive/2007/05/31/…
KristoferA 31/10/08

1
Xin lỗi, liên kết trước đó phải là blog.msdn.com/mattwar/archive/2008/05/04/…
KristoferA 31/10/08

Cảm ơn - đã không đọc bài đăng đó. Tôi đã biết rằng có một API nội bộ, nhưng không biết liệu API đó đã được công bố hay chưa.
Jason Short

1
Cùng một blog ( blog.msdn.com/mattwar ) cũng có một bài viết hoàn chỉnh (kèm theo các mẫu) về cách viết các trình cung cấp một trình cung cấp L2S có thể tải xuống có thể cắm được mà bạn có thể thấy hữu ích.
KristoferA 31/10/08

Không quan trọng nếu bạn có thể hack nó - nó KHÔNG được MS hỗ trợ chính thức. Bạn KHÔNG có tích hợp VSIP cho nó. Bạn không thể có được một logo cho bạn ứng dụng ...
Jason ngắn

5

Tôi đoán tôi không thực sự thấy vấn đề ở đây. Từ bài viết bạn đã liên kết:

Chúng tôi đang lắng nghe khách hàng về LINQ to SQL và sẽ tiếp tục phát triển sản phẩm dựa trên phản hồi mà chúng tôi nhận được từ cộng đồng.

Tui bỏ lỡ điều gì vậy? Điều gì tạo ấn tượng về việc LINQ to SQL đã chết khi xuất hiện?



4

Còn ai nhớ VB6 không? Cho dù cá nhân bạn không thích nó hay yêu thích nó, Microsoft đã bán được hàng triệu bản và các doanh nghiệp đã chi hàng triệu đô la để viết hàng triệu dòng VB6. Những gì đã xảy ra tiếp theo?

  • Vâng, Microsoft vẫn hỗ trợ VB6 (loại - không phải IDE).
  • Và Microsoft vẫn nói rằng họ đang lắng nghe khách hàng VB6 ngay cả bây giờ ( vào tháng 09 ).
  • Nhưng khách hàng của VB6 có hài lòng không? Không phải từ năm 2002 , 4 năm sau khi VB6 ra mắt.
  • Tại sao không? Các đường dẫn nâng cấp để đầu tư mã của bạn lên công nghệ thay thế, VB.Net, rất tốn kém .

Vì vậy, chỉ cần xem xét bài học đó. Đối với tôi, có vẻ như hỗ trợ LinqToSQL sẽ khá khó chịu. Họ có nghĩa vụ hỗ trợ nó vì nó nằm trong khuôn khổ .NET hiện tại. Nhưng nó sẽ có trong .NET 5, 6, 7 ...? Chỉ cần nghĩ về mức độ quan trọng đối với bạn (đối với tất cả những gì tôi biết, nó không quan trọng đối với bạn).


đối với tôi tốt nhất là ado.net thuần túy với OracleConnection và SqlConnection vì các nhà cung cấp này và System.Data.DataSet không bao giờ chết. Là cơ sở của dữ liệu dạng Bảng. Cá nhân tôi thích EF nhưng DataSet chuyên nghiệp tiếp tục là một tiêu chuẩn.
bán rong

3

Có lẽ bạn không nên bận tâm học Linq to SQL, nhưng vẫn có các Entities Linq mà họ sẽ giữ lại.


1
Cách tiếp cận EF hiện tại có một số vấn đề nghiêm trọng, không nhất là lớp cơ sở được thực thi. Tôi mong đợi EFvNext trông khá khác biệt ở các nơi; cho đến lúc đó, tôi khuyên bạn nên sử dụng tùy chọn đơn giản nhất: L2S - hoặc nHibernate ;-p
Marc Gravell

1
Khi bạn đã hiểu rõ về LINQ, tôi khuyên bạn nên "học" LINQ to SQL là một việc khá đơn giản. Đó chỉ là trường hợp thêm một mục lớp LINQ to SQL vào dự án của bạn và kéo thả một vài bảng vào trình thiết kế.
Richard Ev


3

Rõ ràng là 2 ORM là một trong rất nhiều trong hộp công cụ của Microsoft, nhưng đối với tôi, nó dường như là khuôn khổ sai đã được chọn vì tất cả các lý do sai. Thực tế là nhóm C # đã thực hiện công việc mà nhóm ADO.NET được cho là phải làm trong thời gian ngắn hơn rất nhiều và thực hiện công việc theo cách tốt hơn là điều khó nuốt đối với nhóm ado.net. Không phải tôi biết hoạt động bên trong của 2 framework nhưng tôi nghĩ sẽ nhanh hơn rất nhiều nếu nâng cấp những thiếu sót mà linq2sql mắc phải lên entity framework.

Có vẻ như có quá nhiều chính trị liên quan và tôi nghĩ điều này thực sự sẽ làm tổn hại đến danh tiếng của asp.net, vì tôi không tin tưởng rằng khung Entity sẽ mang lại cho chúng tôi trải nghiệm thân thiện với người dùng như Linq2sql. Nhóm ado.net cũng có thể học một số kỹ năng giao tiếp từ nhóm asp.net mvc vì việc làm rõ vấn đề tốt nhất là mơ hồ.

Sẽ rất thú vị khi biết Scott Gu và nhóm MVC của anh ấy đứng ở đây vì hầu hết các ví dụ của họ đều sử dụng Linq2Sql.


2

Luôn có một chút kỳ lạ là với Linq 2 Sql và Entity Framework, có những vùng chồng chéo lớn. Tôi nghĩ lý do duy nhất khiến L2S chỉ được đưa vào bản phát hành .NET 3.5 là vì có nhiều nghi ngờ rằng EF sẽ bao giờ nhìn thấy ánh sáng ban ngày. Bây giờ EF1 đã hết, tất cả đều là một v1 rất thô, không cần đến L2S nữa.


2

(không, StingyJack, LINQ to SQL không sử dụng khung thực thể)

Dù sao, tôi sẽ không lo lắng. Tim nói rằng họ đang lắng nghe khách hàng về LINQ to SQL. Đánh giá về sự nhiệt tình mà tôi đã thấy đối với L2S, khách hàng (đó là chúng tôi) sẽ nói lên suy nghĩ của họ.

Và, như KristoferA chỉ ra, họ thực sự không thể 'giết' L2S, chỉ đóng băng nó. Và L2S, một khi đã được đánh bóng, không thực sự cần phát triển thêm nhiều nữa. Với nhà cung cấp L2S, bất kỳ tiến bộ nào trong LINQ cũng sẽ có sẵn trong L2S. Vì vậy, sự lựa chọn vẫn sẽ là của chúng tôi.


Chà, họ có thể giết nó bằng cách không đưa nó vào Dot Net 4, vốn được cho là một bản cài đặt song song. Điều đó có nghĩa là các ứng dụng dot net 4 sẽ không thể truy cập vào nó nếu không cài đặt 3.5SP1 trên cùng một máy - không biết điều đó có đúng hay không.
Jason Short

Còn ai nhớ VB6 không? Microsoft vẫn hỗ trợ VB6 (loại). Họ vẫn nói rằng họ đang lắng nghe khách hàng VB6 ngay cả bây giờ. Nhưng chúng ta có hạnh phúc không? Không. Các đường dẫn nâng cấp để đưa mã của chúng tôi lên công nghệ thay thế, VB.Net, rất tốn kém. Vì vậy, chỉ cần xem xét bài học đó: và suy nghĩ xem liệu LinqToSQL sẽ có trong .NET 4, 5, 6 ... hay không và mức độ quan trọng đối với bạn.
MarkJ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.