Tôi cần hiểu điều này. Có sự khác biệt lớn giữa EF5.0 và EF6 * trong TSQL mã thế hệEntityFramework LINQToEntities tạo TSQL chậm kỳ lạ ở đâu-khoản
Trong mã tôi đây là LINQ của tôi -. Statemant
var qry2 = context.viw_overview_1.Where(i => i.article_EAN17 == ean).Select(i => i.article_id).Take(200);
EntityFramework 5,0 tạo ra chỉ là một TSQL đơn giản và nhanh chóng Ở ĐÂU - tuyên bố như thế này, đó là hoàn hảo
... WHERE [Extent1].[article_EAN17] = @p__linq__0
00.0960096ms in SSMS
nhưng EntityFramework 6. * tạo ra một tuyên bố phức tạp và chậm hơn nhiều
... WHERE (([Extent1].[article_EAN17] = @p__linq__0) AND (NOT ([Extent1].[article_EAN17] IS NULL OR @p__linq__0 IS NULL))) OR (([Extent1].[article_EAN17] IS NULL) AND (@p__linq__0 IS NULL))
45.3665362ms in SSMS
trường article_EAN17 cũng có chỉ mục. tuy nhiên EF6. * Mất độ tuổi để khởi tạo, NHƯNG có cách nào để tạo ra một câu lệnh WHERE đơn giản trong EF6. * Với các thuộc tính hoặc một cái gì đó như thế này? Tôi đã thử sử dụng chuỗi.Equals(), string.Compare(), xoay thông số, nhưng không có gì thay đổi.
Why does Entity Framework 6 generate complex SQL queries for simple lookups? giải thích sự khác biệt, Nhưng có cách nào để buộc EF tạo TSQL đơn giản hay không.
Tôi nghi ngờ thay đổi T-SQL đang làm chậm mọi thứ. Bạn đã thử cả hai truy vấn trên cùng một tập dữ liệu? – haim770
Chỉ tò mò - bạn đã tát hai câu lệnh vào SSMS và so sánh hiệu suất của chúng? –
so sánh đơn giản EF5 nhanh hơn 5 lần so với EF6 trong C# và nhanh hơn nhiều trong SSMS – Roland