Có lý do nào để sử dụng LINQ to SQL hay tôi chỉ cần chuyển sang Thực thể?
Tôi hầu như không khách quan (là người dùng LinqToSql chết cứng), nhưng điều này là đáng trả lời.
Công nghệ ánh xạ quan hệ đối tượng là những nỗ lực để giải quyết hoặc giảm thiểu sự không phù hợp của trở kháng đối tượng.Chúng là cầu nối giữa hai thế giới - thế giới đối tượng và thế giới dữ liệu quan hệ.
Và có vẻ như các nhà phát triển của những cây cầu này thường gọi một bên hoặc nhà kia, nhà.
LinqToSql là ORM từ phía đối tượng. Nó được phát triển bởi nhóm C# và cho phép bạn sử dụng các đối tượng để biểu diễn dữ liệu. Trong LinqToSql không có các chuỗi trình biên dịch đục, tất cả các truy vấn được kiểm tra bởi trình biên dịch đối với ánh xạ.
EF là ORM từ phía dữ liệu. Nó được phát triển bởi nhóm ADO và cho phép bạn sử dụng dữ liệu được biểu diễn dưới dạng đối tượng. Trong EF, có rất nhiều chuỗi mờ đục.
Truy vấn cuối cùng phải chạy trên cơ sở dữ liệu và trình biên dịch không thể xác nhận rằng cơ sở dữ liệu có sẵn tại thời gian chạy khớp với ánh xạ (đúng trong ORM). Do thực tế này của thế giới dữ liệu, nhóm dữ liệu không coi trọng trình biên dịch đảm bảo nhiều như nhóm C#.
Đã làm việc trong một phụ trợ TSQL trong nhiều năm, mà không có sự bảo vệ của một trình biên dịch, tôi xảy ra để đánh giá cao giúp đỡ bất kỳ trình biên dịch sẽ cung cấp cho tôi. Và vì vậy tôi đứng về phía đội C# về vấn đề này.
Ví dụ: tải Khách hàng bằng Đơn đặt hàng.
//linq to sql.
DataLoadOptions load = new DataLoadOptions();
load.LoadWith<Customer>(c => c.Orders); //<-- strong typed
myDataContext.LoadOptions = load;
IQueryable<Customer> query = myDataContext.Customers
.Where(c => c.CustomerId == 1);
//entity framework
IQueryable<Customer> query = myObjectContext.Customers
.Include("Orders") // <-- opaque string
.Where(c => c.Customer.Id == 1);
Nguồn
2010-06-04 20:44:06
Rất vui được xem lại câu hỏi này ngay bây giờ .Net 4.0 ra, với nhiều thay đổi cho cả hai công nghệ. – DOK
Trùng lặp: http://stackoverflow.com/questions/2874003/whats-the-best-object-relational-mapping-tool-for-net –