Tôi đang làm việc cho khách hàng có một dự án lớn đang sử dụng Linq-to-SQL. Khi dự án bắt đầu, đó là sự lựa chọn rõ ràng, bởi vì Entity Framework đang thiếu một số tính năng chính tại thời điểm đó và hiệu suất của Linq-to-SQL tốt hơn nhiều.
Bây giờ EF đã phát triển và Linq-to-SQL đang thiếu hỗ trợ async, điều này rất tốt cho các dịch vụ có khả năng mở rộng cao. Đôi khi chúng tôi có hơn 100 yêu cầu và mặc dù chúng tôi đã tối ưu hóa cơ sở dữ liệu của mình, hầu hết các truy vấn vẫn mất vài mili giây để hoàn thành. Do các cuộc gọi cơ sở dữ liệu đồng bộ, luồng bị chặn và không có sẵn cho các yêu cầu khác.
Chúng tôi đang suy nghĩ để chuyển sang Entity Framework, chỉ dành cho tính năng này. Thật đáng tiếc khi Microsoft đã không triển khai hỗ trợ không đồng bộ vào Linq-to-SQL (hoặc nguồn mở nó để cộng đồng có thể làm điều đó).
Phụ lục tháng 12 năm 2018: Microsoft đang chuyển sang .NET Core và Linq-2-SQL không hỗ trợ trên .NET Core, vì vậy bạn cần chuyển sang EF để đảm bảo bạn có thể di chuyển sang EF.Core trong tương lai.
Ngoài ra còn có một số tùy chọn khác để xem xét, chẳng hạn như LLBLGen . Đó là một giải pháp ORM trưởng thành đã tồn tại từ lâu và đã được chứng minh nhiều bằng chứng trong tương lai sau đó là các giải pháp dữ liệu MS (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).