2015-06-23 32 views
5

Tôi đang làm việc trên ứng dụng MVC 5 sử dụng Khuôn khổ thực thể 6.1.3. Tôi đang cố gắng tối ưu hóa cuộc gọi đầu tiên, thường mất 1-4 giây, bằng cách tạo trước lượt xem. Tôi hiểu tại sao điều này xảy ra, nhưng tôi cảm thấy như tôi đang thiếu một bước quan trọng ở đâu đó.Khung thực thể tạo trước Lượt xem

Thử nghiệm hiện tại của tôi chạy cùng chức năng năm lần để lấy một tập hợp các đối tượng từ DB của tôi bằng EF. Khi tôi chạy này với 'Nhúng trong Output mục' bộ trong edmx của tôi tôi nhận được kết quả như sau:

**

  • Đầu tiên EF Gọi: 2617 mili giây
  • Second EF Gọi: 19 mili giây
  • thứ ba EF Gọi: 19 mili giây
  • thứ tư EF Gọi: 17 mili giây
  • Fifth EF Gọi: 20 mili giây

**

Tôi hy vọng điều này kể từ EF đang tạo ra các quan điểm địa phương để truy cập cơ sở dữ liệu ...

Khi tôi chuyển sang 'Sao chép vào thư mục Output', hãy kiểm tra các file của tôi đang được sao chép vào thư mục bin và chuỗi kết nối của tôi đã được cập nhật, và sau đó chạy thử nghiệm cùng tôi nhận được kết quả tương tự:

**

  • Đầu tiên EF Gọi: 2546 mili giây
  • Second EF Gọi: 19 mili giây
  • Thứ ba EF Gọi: 18 mili giây
  • Thứ tư EF Gọi: 18 mili giây
  • Fifth EF Gọi: 21 mili giây

**

Không có thay đổi trong cuộc gọi đầu tiên, thật kỳ lạ. Tôi đã thêm EF Power Tools, nhấn chuột phải vào edmx => Entity Framework => Generate Views. Tệp 'Model1.View.cs' được tạo bằng chuỗi cho mỗi bảng/lượt xem của tôi, vì vậy tôi cảm thấy như tôi đang đi đúng hướng. Khi tôi chạy thử nghiệm một lần nữa tôi đã nhận được kết quả tương tự. Đặt điểm ngắt trong mỗi phương thức của tệp 'Model1.View.cs' mới được tạo ra cho thấy rằng nó không bao giờ bị tấn công.

Tôi có thiếu một bước quan trọng ở đây không? Tôi làm cách nào để yêu cầu EF sử dụng tệp đã được tạo bởi EF Power Tools hoặc làm cách nào để làm cho Thư mục sao chép sang đầu ra hoạt động như tôi đã đọc trực tuyến?

Trả lời

12

Theo tôi nhớ EF Power Tools không được cập nhật để hỗ trợ EF6. Nếu bạn chắc chắn đây là thế hệ xem đang gây ra sự cố, bạn có thể sử dụng thế hệ xem T4 template hoặc tương tác pre-gegnerated views (vâng, tôi là người sáng tạo cả hai). Bạn có thể tìm thêm chi tiết về cách sử dụng mẫu T4 trong this post. Chế độ xem được tạo trước tương tác được mô tả here.

Tuy nhiên, xem thế hệ trong EF6 được cải thiện rất nhiều và chỉ là vấn đề đối với các mô hình lớn hơn hoặc khi các hệ thống phân cấp phức tạp có liên quan. Tôi cho rằng nút cổ chai mà bạn đang thấy không phải do thế hệ xem mà do xây dựng mô hình.Hãy xem this post bởi nhóm EF thảo luận một chút về cải thiện hiệu suất khởi động bằng cách tạo hình ảnh gốc. Bạn cũng có thể xem Performance Consideration.

+0

Cảm ơn bạn Pawel! –

+0

Tôi bao gồm lượt xem được tạo trước tương tác và hình ảnh gốc được tạo và cuộc gọi đầu tiên của tôi đã giảm xuống còn 458 mili giây. Bạn thật tuyệt vời. –

+0

Hi Matthew, tôi đang làm việc trên một ứng dụng ASP.NET MVC và tôi sẽ kiểm tra giải pháp của bạn. Bạn đã thêm mã của Pawel ở đâu? Trong tập tin Global.asax? Tôi đã xác định bối cảnh cơ sở dữ liệu và edmx trong một dll bên ngoài. Cảm ơn trước. – jacktric

Các vấn đề liên quan