LINQ to SQL đã chết?


17

Có bất kỳ lý do để tiếp tục sử dụng Linq sang SQL, hoặc tốt hơn là chuyển sang các kỹ thuật ORM như EF, NHibernate, v.v.

Chúng tôi đang sử dụng Linq to SQL trong một ứng dụng doanh nghiệp lớn mới sẽ tồn tại trong một thời gian dài. Động lực cho ứng dụng doanh nghiệp mới này là ứng dụng được viết thông thường bằng Visual Basic và vì Microsoft đã ngừng hỗ trợ nên chúng tôi buộc phải viết lại ứng dụng. Có vẻ như chúng tôi đã ở đó nhưng lần này với DAL (Lớp truy cập dữ liệu) của chúng tôi.

Tôi đã đọc bài viết này , nhưng nó chỉ so sánh với điểm yếu của EF.


+1 tuyệt vời Q. Điều này rất hấp dẫn đối với tôi, tôi đã cân nhắc việc chuyển các thủ tục được lưu trữ của mình và các chuỗi truy vấn SQL được tối ưu hóa sang LINQ sang SQL để cải thiện khả năng đọc, tôi không biết nó không được phát triển nữa.
sợ hãi

MS có một loại trình chiếu .NET 4 nhỏ nói rằng nó không chết - nhưng điều đó có thể có nghĩa là nhiều thứ. Họ đã cải thiện nó trong .NET 4.0: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester

Không lập lại. Câu hỏi này đã được tranh luận về quảng cáo trên StackOverflow. Bạn có thể nói FUD không?
Robert Harvey

Câu trả lời:


11

Nếu bạn đã sử dụng nó và không gặp phải bất kỳ khó khăn nào, tôi sẽ gắn bó với các dự án hiện có.

Linq2Query khá đẹp, nhưng có giới hạn, ORM - nếu bạn muốn ánh xạ các đối tượng của mình theo những cách phức tạp hơn những cách cơ bản do Linq2Query cung cấp thì bạn sẽ bị mắc kẹt. Microsoft đã sửa một vài lỗi khi họ phát hành .net 4 nhưng đã tuyên bố rằng họ sẽ không dành tài nguyên để mở rộng nó.

Tôi muốn nói rằng nếu bạn có một dự án khá đơn giản có tuổi thọ hạn chế thì Linq2Query là một lựa chọn gọn nhẹ miễn là bạn cẩn thận không rò rỉ phụ thuộc vào Linq2Query ở mọi nơi. Đối với bất cứ điều gì nhiều hơn tôi sẽ đi với một cái gì đó khác (ví dụ NHibernate hoặc EF) vì Linq2Query gần như là một ngõ cụt.


Tôi chỉ có thể đồng ý, không thực sự chết nhưng nó ở trên bàn trong sự phân chia theo một cách nào đó. Nếu công cụ đang hoạt động và đó là một tác động lớn để thay đổi nó ngay bây giờ ... thì bạn có thể muốn ngồi lại một chút và tìm thời điểm tốt để chuyển đổi sang EF / NHibernate, có thể là một dự án nâng cấp được tài trợ (cuối cùng chúng tôi tất cả đều muốn có một công việc, bánh mì và bơ trên bàn).
mạng

@cyberened: Nghe có vẻ là một cái cớ tốt cho công việc không cần thiết.
Robert Harvey

12

Nó chưa chết, nhưng Microsoft hiện đang tập trung vào Entity Framework.

Tôi đã sử dụng LINQ to SQL cho các dự án nhỏ và nó khá đẹp như một lớp dữ liệu nhẹ và tôi sẽ cân nhắc sử dụng lại nó cho các dự án có kích thước tương tự. Việc thực hiện LINQ chính nó là thực sự tốt và cho đến gần đây nhiều tốt hơn so với dự án NHibernate LINQ. Trong dự án lớn hơn mà tôi đã sử dụng L2S, tôi thấy khó có thể đưa ra một mẫu đơn vị công việc mà tôi hài lòng, do những hạn chế với lớp 'DataContext' của L2S. Cố gắng thực hiện một cái gì đó như 'Phiên theo yêu cầu' với L2S có vẻ rất khó hoặc không thể.

Tôi cũng sẽ không thực sự coi L2S là một ORM thực sự, vì nó thực sự không cung cấp cho bạn nhiều tùy chọn ánh xạ. Thiết kế lớp của bạn thực sự cần phải tuân theo lược đồ cơ sở dữ liệu của bạn (bảng mỗi lớp) nếu không nó sẽ chiến đấu với bạn mỗi bước. Một điều nữa tôi không thích về L2S là nhu cầu sử dụng các loại cụ thể ( EntitySetEntityRef) để xử lý các bộ sưu tập, tài liệu tham khảo và tải lười biếng. Điều này có nghĩa là không thể giữ mô hình miền ORM của bạn mà không cần thêm một lớp trừu tượng.

Vấn đề khác của tôi với L2S là sự phụ thuộc duy nhất vào LINQ để tạo truy vấn. Nhà cung cấp LINQ được viết rất tốt và thường tạo SQL tốt cho phần lớn các truy vấn nhưng tôi lo ngại rằng có nhiều truy vấn phức tạp hơn không thể diễn đạt tốt với LINQ. Sử dụng L2S ​​về cơ bản bạn phải hoàn nguyên để gọi các thủ tục được lưu trữ trong những trường hợp này, trong khi (ví dụ) NHibernate có một số API (nhà cung cấp LINQ, QueryOver, HQL, v.v.) có thể được sử dụng khi bạn muốn kiểm soát nhiều hơn SQL được tạo.

Trong sự bảo vệ của L2S đối với NHibernate, có rất ít chi phí trong việc đưa nó lên và chạy trên một dự án.


2

Nó không chết vì nó vẫn hoạt động, nhưng nếu nó không được phát triển thêm thì việc chuyển sang một thứ khác có ý nghĩa.

Tuy nhiên, nếu nó hoạt động cho ứng dụng của bạn thì không có điểm nào thay đổi vì mục đích thay đổi.


2

ổn định hơn imho chết:

http://www.thinqlinq.com/default/LINEQ-to-Query-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

Họ đã chuyển nỗ lực cải tiến của mình sang Entity Framework, nơi thực sự cần thiết nếu sản phẩm đó thành công. Không có gì mới ngoài khả năng tương thích và sửa lỗi trên linq2sql trong một thời gian.

Trang web này được chạy với rất nhiều linq2sql nếu tôi không nhầm.


+1 cho "ổn định" Cách tốt nhất để xem L2S, imho. Ổn định và không còn được gia hạn / thay đổi.
quentin-starin

Xin lỗi nhưng "không có gì mới nhưng khả năng tương thích và sửa lỗi" có nghĩa là nó có trong ngăn chặn. Về cơ bản, đó là một sự đảm bảo rằng cộng đồng sẽ tránh xa nó, bạn sẽ không thấy nhiều dự án mới sử dụng nó và vì vậy bạn có thể không muốn sử dụng nó trong các dự án mới. "Chết" không có nghĩa là nó không hoạt động, nó chỉ có nghĩa là có ít sự đổi mới hoặc quan tâm.
Jeremy

Từ quan điểm doanh nghiệp lớn, thực tế là lõi không còn được sửa đổi có nghĩa là cuối cùng nó có thể đi vào danh sách các kỹ thuật được phê duyệt trong nhiều trường hợp. Trong công việc của tôi, chúng tôi đã chờ đợi điều này một thời gian. EF vẫn không ổn định để nhảy vào và L2S luôn thu hút sự quan tâm trong các tình huống mà không muốn có chi phí hoạt động của EF.
Hóa đơn

@Jeremy Mọi người vẫn sử dụng TeX chứ?
thay thế

1

Điều này thật kỳ lạ nhưng tôi đã thấy cụm từ này rất nhiều (L LIN LINQ2Query đã chết) và tôi không chắc nó bắt nguồn từ đâu *. Nó cũng giống như Windows XP đã chết. Microsoft đã ngừng hỗ trợ và đã tạo ra một cái gì đó mới (và trong mắt tôi tốt hơn) nhưng mọi người vẫn có thể sử dụng XP miễn phí khi họ sử dụng Linq2Query miễn phí. Phải thừa nhận rằng, tôi sử dụng Linq2Query khi tạo các mô-đun DotNetNuke tùy chỉnh. Tuy nhiên, với các tính năng mới trong EF4, chẳng hạn như phát triển mã đầu tiên ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx ) thật khó để tìm ra lý do để gắn bó với Linq2Query. Tôi không thấy lý do để duyệt và cập nhật mã nhưng đối với mã mới tôi không biết lý do tại sao bạn không muốn sử dụng EF4.

* Thành thật mà nói, tôi rất ám ảnh về ngữ nghĩa! Tôi xin lỗi nếu nó gây phiền nhiễu cho người khác :)

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.