2009-03-22 40 views

Trả lời

29

ADO.NET là API truy cập dữ liệu cơ bản cho .NET Framework (giống như JDBC trong Java). Nó được phát hành kể từ lần phát hành đầu tiên của .NET.

LINQ to SQL là khung truy cập dữ liệu được xây dựng trên ADO.NET và các tính năng ngôn ngữ mới làm cho dữ liệu SQL Server có sẵn tự nhiên theo kiểu định hướng đối tượng của lập trình.

7

Có một bộ khá lớn về sự khác biệt giữa hai công nghệ này mà không thể được thực sự được đề cập trong một thời gian ngắn SO bưu điện, nhưng tôi sẽ cố gắng để bù đắp những điểm nổi bật

  • Trong Linq2Sql bạn viết các truy vấn của bạn trên trong đối tượng bộ nhớ. Dưới mui xe mặc dù mã bạn viết được dịch sang biểu thức cây và được dịch sang SQL lúc chạy, nơi truy vấn thực sự chạy. Trong ADO.Net bạn trực tiếp xây dựng các truy vấn SQL được chạy với máy chủ.
  • Linq2Sql có hỗ trợ ngôn ngữ trực tiếp trong C# và VB.Net. ADO.Net cung cấp hỗ trợ cho truy vấn dựa trên chuỗi có 0 hỗ trợ ngôn ngữ khác hơn là chỉ một chuỗi thô.
  • Hỗ trợ ngôn ngữ trong Linq2Sql khiến cho các truy vấn kiểu an toàn. Trong ADO.Net, tất cả các kết quả truy vấn phải được chuyển đổi thành kiểu thích hợp, về cơ bản loại bỏ các kiểm tra an toàn kiểu.
1

ADO.NET là tập hợp các thư viện lớp cung cấp cơ sở hạ tầng truy cập dữ liệu cơ bản trên các Thư viện lớp cơ bản .NET. Nó cũng chứa cơ sở hạ tầng LINQ cơ bản, chẳng hạn như lớp tĩnh của Enumerable (cung cấp LINQ to Object) và một giao diện để thực hiện truy vấn cơ bản đối với dữ liệu quan hệ như IQueryable.

LINQ to SQL KHÔNG phải là khung truy cập dữ liệu.

ADO.NET có thể được coi là một khung truy cập dữ liệu, nhưng điều này có thể gây hiểu lầm, vì ADO.NET không phải là một sản phẩm độc lập. ADP.NET thực sự là một phần của .NET Framework.

LINQ to SQL chỉ đơn giản là triển khai LINQ để hoạt động như một nhà cung cấp dữ liệu kết nối và ánh xạ trực tiếp đến SQL Server. Bên dưới LINQ to SQL, chứa tập quán nặng của các lớp ADO.NET trong không gian tên System.Data.SqlClient, do đó nó được triển khai trên đầu trang của ADO.NET nhưng tập trung vào và nó cụ thể để truy cập SQLServer.

2

Ngoài ra, không thực sự chắc chắn liệu tôi có ở đây không. Nhưng ADO.NET là allways làm việc 'offline' với dữ liệu của bạn. Tôi nghĩ LINQ2SQL đang làm việc trực tuyến với dữ liệu của bạn.

+1

Đó không phải là trường hợp thực sự. Nếu bạn sử dụng ADO.NET DataAdapter để điền vào một DataSet thì bạn đang làm việc 'offline'. Tuy nhiên với một DataReader bạn đang trực tuyến (kết nối) như có thể được .... –

8

Bạn cần phải bắt đầu với sự hiểu biết rằng LINQ là mô hình dự định của Microsoft để truy vấn tất cả các loại dữ liệu có cấu trúc được khai báo với một công cụ - nghĩ "One Ring To Rule Them All". LINQ to SQL chỉ là biểu hiện đầu tiên, được triển khai để truy vấn cơ sở dữ liệu quan hệ.

Trên thực tế, Microsoft có thông báo hỗn hợp về mối quan hệ của LINQ với SQL. Tôi nghĩ rằng vấn đề là nó đã trở thành hiểu như là một thay thế cho các chiến lược trừu tượng khác, và nó bây giờ thường được xem như là một cách cho các lập trình viên để tránh sự cần thiết phải trở thành có tay nghề cao tại SQL.

ADO.Net xử lý OOP như nó là gì, và dữ liệu quan hệ như nó là gì, và hy vọng bạn thực hiện từng điều khoản theo cách riêng của mình.

Những lợi thế và bất lợi của cả hai được mở để tranh luận.Nhưng nếu bạn đồng ý rằng các trình thuật sĩ Khoa học Máy tính của Microsoft đã đưa ra một thứ trừu tượng về truy vấn dữ liệu có cấu trúc, thì có thể bạn sẽ muốn di chuyển theo hướng này. Có một số dấu hiệu cho thấy các nhà cung cấp sản phẩm phần mềm khác sẵn sàng để chơi cùng, vì vậy nó có thể thậm chí không kết thúc được hoàn toàn độc quyền, mà sẽ là một điều tốt.

1

Sơ đồ dưới đây cung cấp một cái nhìn tổng quan về cách thức công nghệ ADO.NET LINQ liên quan đến ngôn ngữ lập trình cấp cao và nguồn dữ liệu LINQ-enabled.

LINQ and ADO.NET http://i.msdn.microsoft.com/dynimg/IC176601.gif

từ http://msdn.microsoft.com/library/vstudio/bb399365

LINQ giúp bạn tích hợp ADO.NET trong một phần của mã nơi trình biên dịch có thể đánh giá và giúp bạn với IntelliSense và vân vân. Vì vậy, với LINQ bạn có thể sử dụng ADO.NET dễ dàng hơn ...