2013-08-30 44 views
21

Tôi đang sử dụng EF6 rc1 với chiến lược Mã đầu tiên, không có chế độ xem trước và vấn đề là: Nếu tôi biên dịch và chạy ứng dụng exe, nó giống như 15 giây để chạy truy vấn đầu tiên (không sao, vì tôi vẫn đang làm việc trên các chế độ xem được tạo trước). Nhưng nếu tôi sử dụng Visual Studio 2013 Preview để gỡ lỗi chính xác cùng một ứng dụng phải mất gần 2 phút TRƯỚC KHI chạy truy vấn đầu tiên:EF6/Code Đầu tiên: Siêu chậm trong lần truy vấn đầu tiên, nhưng chỉ trong Debug

Dim Context = New MyEntities() 
Dim Query = From I in Context.Itens '' <--- The debug takes 2 minutes in here 
Dim Item = Query.FirstOrDefault() 

Có cách nào để loại bỏ thêm thời gian này không? Tôi có làm gì sai ở đây không?

Ps .: Các bối cảnh chính nó không phức tạp, nó chỉ đầy đủ với hơn 200 bảng.

Edit: tìm thấy ra rằng vấn đề là trong thời gian debug EF dường như được tạo Views phớt lờ những cái trước tạo ra. Sử dụng mã nguồn từ EF Tôi phát hiện ra rằng thuộc tính:

IQueryProvider IQueryable.Provider 
    { 
     get 
     { 
      return _provider ?? (_provider = new DbQueryProvider(
               GetInternalQueryWithCheck("IQueryable.Provider").InternalContext, 
               GetInternalQueryWithCheck("IQueryable.Provider").ObjectQueryProvider)); 
     } 
    } 

là nơi thời gian được tiêu thụ. Nhưng điều này là lạ vì nó chỉ mất thời gian để gỡ lỗi. Am i thiếu cái gì ở đây?

Chỉnh sửa: Tìm thêm thông tin liên quan đến câu hỏi: Sử dụng Trình theo dõi quy trình (bởi Sysinternals) Tôi phát hiện ra rằng quá trình 'desenv.exe' tốn nhiều thời gian. Để cụ thể hơn thời gian tiêu thụ của nó với một 'Thread Exit'. Nó lặp lại ngăn xếp Thoát Thread 36 lần. Tôi không biết nếu thông tin này là rất hữu ích, nhưng tôi lưu '.cvs' với chồng, đây là cơ thể của mình: [...] (sửa: loại bỏ cơ thể' .cvs', tôi có thể gửi nó một lần nữa bởi các ý kiến ​​nếu ai đó thực sự nghĩ rằng nó sẽ là hữu ích, nhưng nó là khó hiểu và quá lớn)

Edit:. được cài đặt VS2013 Ultimate và Entity Framework 6 RTM. Cài đặt công cụ Power Entity Framework Beta 4 và sử dụng nó để tạo ra các khung nhìn. Không có gì thay đổi ... Nếu tôi chạy exe phải mất 20 giây, nếu tôi bắt đầu 'gỡ lỗi nó mất 120 giây.

Chỉnh sửa: Đã tạo một dự án nhỏ để mô phỏng lỗi: http://sdrv.ms/16pH9Vm Chỉ cần chạy dự án bên trong môi trường và trực tiếp thông qua .exe, nhấp vào nút và so sánh thời gian tải.

+0

Đây là một vấn đề phổ biến mà đã cản EF trong một thời gian khá lâu, tôi nghĩ họ sẽ giải quyết nó trong EF6 .. nhưng có lẽ không .. Một điều EF6 cung cấp là khả năng chia tay mô hình của bạn thành nhiều mô hình, có thể là đặt cược tốt nhất của bạn. –

+0

http://entityframework.codeplex.com/wikipage?title=Multi-tenant%20Migrations –

+0

Breaking trong nhiều ngữ cảnh thay đổi gì cả.Tất cả các ngữ cảnh đều tuân thủ 'quy tắc', vì vậy phải mất gần như cùng một thời gian để tải chúng, trừ khi tôi tải theo yêu cầu, nhưng tôi cần tải tất cả, vì có rất nhiều khóa ngoại giữa chúng. –

Trả lời

12

Đây là vấn đề hiệu suất nổi tiếng ở Lazy (mà EF đang sử dụng) khi debugger được đính kèm. Chúng tôi hiện đang làm việc trên một sửa chữa (cách tiếp cận hiện tại chúng tôi đang xem xét là loại bỏ việc sử dụng Lazy). Chúng tôi hy vọng sẽ sớm khắc phục sự cố này trong bản phát hành bản vá. Bạn có thể theo dõi tiến độ của vấn đề này trên trang CodePlex của chúng tôi - http://entityframework.codeplex.com/workitem/1778.

tin chi tiết về sự ra đời phiên bản 6.0.2 vá đó sẽ bao gồm một sửa chữa đang ở đây - http://blogs.msdn.com/b/adonet/archive/2013/10/31/ef6-performance-issues.aspx

+0

Cảm ơn bạn, vì đây là một lỗi biết tôi sẽ đánh dấu là câu trả lời và theo dõi các workepem codeplex. –

+2

Bản vá này vẫn gặp sự cố về hiệu suất đối với tôi. –

-1

Tôi không biết nếu bạn đã tìm thấy các giải pháp. Nhưng trong trường hợp của tôi, tôi đã có vấn đề tương tự mà lãng phí tôi gần một tuần sau khi thử các đề xuất khác nhau. Cuối cùng, tôi tìm thấy một giải pháp bằng cách thay đổi web.config của mình thành optimizationCompilations = "true" và hiệu suất được cải thiện đáng kể từ 15-30 giây đến khoảng 2 giây.

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