Thời gian thực hiện bên dưới là 30 giây lần đầu tiên và 25 giây vào lần tiếp theo tôi thực thi cùng một bộ mã. Khi xem trong SQL Profiler, tôi ngay lập tức nhìn thấy một đăng nhập, sau đó nó chỉ ngồi đó trong khoảng 30 giây. Sau đó, ngay khi câu lệnh chọn được chạy, ứng dụng sẽ hoàn thành lệnh ToList. Khi tôi chạy truy vấn được tạo ra từ Management Studio, truy vấn cơ sở dữ liệu chỉ mất khoảng 400ms. Nó trả về 14 hàng và 350 cột. Có vẻ như thời gian cần phải chuyển đổi kết quả cơ sở dữ liệu sang các thực thể là quá nhỏ, nó không đáng chú ý.Tại sao Khung thực thể mất 30 giây để tải bản ghi khi truy vấn được tạo chỉ mất 1/2 giây?
Vậy điều gì sẽ xảy ra trong 30 giây trước khi thực hiện cuộc gọi cơ sở dữ liệu?
Nếu khung thực thể chậm, chúng tôi không thể sử dụng nó. Có điều gì tôi đang làm sai hay điều gì đó tôi có thể thay đổi để tăng tốc độ này một cách đáng kể?
UPDATE: Được rồi, nếu tôi sử dụng một truy vấn biên soạn, lần đầu tiên nó mất 30 giây, và lần thứ hai phải mất 1/4 của một giây. Tôi có thể làm gì để tăng tốc cuộc gọi đầu tiên không?
using (EntitiesContext context = new EntitiesContext())
{
Stopwatch sw = new Stopwatch();
sw.Start();
var groupQuery = (from g in context.Groups.Include("DealContract")
.Include("DealContract.Contracts")
.Include("DealContract.Contracts.AdvertiserAccountType1")
.Include("DealContract.Contracts.ContractItemDetails")
.Include("DealContract.Contracts.Brands")
.Include("DealContract.Contracts.Agencies")
.Include("DealContract.Contracts.AdvertiserAccountType2")
.Include("DealContract.Contracts.ContractProductLinks.Products")
.Include("DealContract.Contracts.ContractPersonnelLinks")
.Include("DealContract.Contracts.ContractSpotOrderTypes")
.Include("DealContract.Contracts.Advertisers")
where g.GroupKey == 6
select g).OfType<Deal>();
sw.Stop();
var queryTime = sw.Elapsed;
sw.Reset();
sw.Start();
var groups = groupQuery.ToList();
sw.Stop();
var executeTime = sw.Elapsed;
}
Điều này dường như rất dễ nhìn. Làm cho nhiều yêu cầu SQL và tải cùng một số đối tượng nhanh hơn làm một yêu cầu sql? – toxaq
Chris bạn dường như biết rất nhiều về .include bạn có thể vui lòng xem bài đăng của tôi http://stackoverflow.com/questions/10320174/speed-up-return-of-linq-entity-result –
@bugz - Tôi đã nhìn. Tôi xin lỗi, tôi không biết. Tôi nên lưu ý rằng cuối cùng tôi đã rất không hài lòng với ASP.net và khung thực thể. Mọi thứ tôi đã làm mất quá nhiều thời gian. Tôi hiện đang viết lại toàn bộ ứng dụng đó trong công cụ ứng dụng của google. –