Các bạn có ai giúp mình được không, mình đã tìm nhiều tài liệu nhưng nó vẫn không nói rõ lắm về ưu là nhược điểm của LINQ. Nếu bạn nào giúp được mình thì mình cám ơn rất nhiều.
1- Stored Procedure and compiled SQL query có tốc độ thực thi nhanh nhất vì nó gần với dữ liệu trên CSDL nhất 2- LINQ là thư viện cho phép truy vấn trên nhiều kiểu dữ liệu khác nhau: Object collections, XML, LINQ to SQL (truy vấn cơ sở dữ liệu MS-SQL), LINQ to Dataset, LINQ to Entity (ADO.net Entity Framework), LINQ to SharePoint, LINQ to XML, LINQ to nHIbernate, LINQ to XYZ, LINQ to Azure SQL Service.... Như vậy là cái 1: mục tiêu chạy thật nhanh, nhưng tính mở rộng kém, khả năng bảo trì kém. Cái 2: một cú pháp lập trình chung--> tính mở rộng rất cao. Khi nào dùng Stored Procedure, SQL query? Khi chúng ta viết ứng dụng Client-Server, khá thuần về công nghệ, ít có sự tương tác với nhiều nguồn dữ liệu khác nhau. Ứng dụng logic có khả năng bảo trì được trong giới hạn cho phép. Phần cứng máy chủ hạn chế, viết Stored Proc để tối ưu tốc độ. Nên viết LINQ khi hệ thống phức tạp, việc bảo trì theo thời gian là rất lớn, Viết LINQ hợp lý sẽ chuyển nhiều logic từ server xử lý lên business layer. Giờ đây xu hướng, chúng ta không viết LINQ to SQL thuần túy nữa, mà chúng ta nên sử dụng ADO.net Entity Framework, EF4. EF4 cho phép: 1- Ánh xạ mềm dẻo cấu trúc bảng ở CSDL vào cấu trúc quan hệ, hướng đối tượng của các object entities trong .NET business layer 2- Vẫn có thể chạy, gọi các câu lệnh dynamic SQL và stored procedure để tận dụng những tính năng lập trình đặc biệt của CSDL 3- Giảm bớt số câu lệnh nặng tính thủ tục (procedural code) để Create Read Update Delete dữ liệu. 4- Thể hiện những mối quan hệ phức tạp như: thừa kế... Hẹn bạn một buổi seminar về EF4 tại Hà nội, ở đó bạn có thể hỏi tôi thoải mái về LINQ..... Nếu so sánh trên cùng một câu truy vấn giữa LINQ và SP hoặc ANSI SQL thì rõ ràng LINQ thua. Nhưng nếu tính trên phương diện cả bài toán thì chưa chắc. Thực tế mình đã và đang làm việc với REPORT, trong một dự án tầm cỡ quốc gia. REPORT có sử dụng cả SP và LINQ, mình thấy rằng có một số REPORT nếu sử dụng SP phải mất đơn vị hàng 1000 dòng code SQL, trong khi sử dụng LINQ chỉ mất đơn vị là 100 dòng code C#. Tương ứng với nó là performance của LINQ còn khá hơn khi dùng SP. Do đó, hầu hết mình đã dùng LINQ thay thế cho SP. sp chạy nhanh hơn vì nó được biên dịch trước bỏi sql server con khi bạn truy xuất với linq thì linq sẽ biên dịch đoạn mã c# -> t-sql. Vậy đương nhiên là chậm hơn rồi. Tuy nhiên nếu bạn để ý, linq cung cấp các giải pháp khá linh hoạt cho việc lựa chọn sp thay cho việc dùng câu lệnh được biên dịch lúc thực thi. Và cũng hỗ trợ rất tốt việc gọi sp. Đó là chuyển các sp và user function thành 1 phương thức trong lớp data context.