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ể ( EntitySet
và EntityRef
) để 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.