[英]Entity Framework - Sorting Strings is causing “The wait operation timed out”
當我使用按Name
排序時,我有以下查詢導致“等待操作超時”。 我怎樣才能使其更快? Foods
表中有8.5k行。
Expression<Func<Food, string>> byName = x => x.FoodTranslations.FirstOrDefault(y => y.Language.Code == CultureInfo.CurrentUICulture.Name).Name;
Expression<Func<Food, string>> byUdsa = x => x.Udsa;
var query = this.DbContext.Foods
.Where(x => category == null || x.FoodTypeId == category)
.Where(x => (string.IsNullOrEmpty(name) || x.FoodTranslations.FirstOrDefault(y=>CultureInfo.CurrentUICulture.Name == y.Language.Code).Name.Contains(name)));
switch (order)
{
case 1:
query = query.OrderBy(byUdsa);
break;
default:
query = query.OrderBy(byName);
break;
}
var result = new JsonFoodIndexResult();
result.Foods = query.Skip(start)
.Take(size)
.Select(x => new JsonFoodIndex
{
Name = x.FoodTranslations.FirstOrDefault(y => y.Language.Code == CultureInfo.CurrentUICulture.Name).Name,
Id = x.Id,
Udsa = x.Udsa,
Category = x.FoodType.FoodTypeTranslations.FirstOrDefault(y => y.Language.Code == CultureInfo.CurrentUICulture.Name).Name
}).ToList();
嘗試
query = query.AsNoTracking().OrderBy(byName);
實體框架創建Proxy對象來跟蹤每條檢索到的記錄的更改,並且此創建會花費很多時間。由於在進行檢索時,我們不需要跟蹤,因此可以將其設置為Off(如上所示)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.