Tôi đang sử dụng EF (phiên bản dll là 4.4) để truy vấn cơ sở dữ liệu. Cơ sở dữ liệu chứa một số bảng có thông tin khóa học. Khi có một cái nhìn những gì thực sự được gửi đến db tôi thấy một lớn, gần như 1300 dòng truy vấn SQL (mà tôi sẽ không dán ở đây vì kích thước của nó). Truy vấn Tôi đang chạy vào bối cảnh trông giống như:Làm cách nào để tránh các truy vấn SQL được tạo lớn trong EF khi sử dụng Include()
entities.Plans
.Include("program")
.Include("program.offers")
.Include("program.fees")
.Include("program.intakes")
.Include("program.requirements")
.Include("program.codes")
.Include("focuses")
.Include("codes")
.Include("exceptions")
.Include("requirements")
where plans.Code == planCode
select plans).SingleOrDefault();
Tôi muốn tránh phải đi lại cho máy chủ khi thu thập thông tin từ mỗi của các bảng liên quan nhưng với một truy vấn lớn như vậy tôi tự hỏi nếu có cách nào tốt hơn để làm điều này?
Cảm ơn.
Vâng, bạn đang thực hiện tải mong muốn và truy vấn của bạn đang cố gắng thu thập tất cả dữ liệu cùng một lúc, vì vậy tại sao nó lại lớn. Chính xác những gì bạn thấy là một vấn đề ở đó?Tùy chọn khác là tải lười biếng với các thuộc tính ảo, nó sẽ được lấy trong nền của EF khi bạn cố gắng truy cập chúng, nhưng bạn đã chỉ rõ bạn không muốn roundtrips vào cơ sở dữ liệu. –
Có một loại câu trả lời tương tự ở đây http://stackoverflow.com/questions/5521749/how-many-include-i-can-use-on-objectset-in-entityframework-to-retain-performance –
Tôi đoán là tự hỏi nếu tôi đang xem xét điều này một cách chính xác. Một truy vấn lớn so với một số truy vấn nhỏ hoặc liệu có cách nào tốt hơn để thực hiện việc này hay không. – b3n