Я попытался изменить свою строку подключения, включив в нее расширенный тайм-аут, и я подтвердил, что на стороне сервера sql представление, которое передает мой объект EF, выполняется в течение нескольких секунд и возвращает в общей сложности 3000 или менее записей.
НО, когда я пытаюсь запустить его с помощью кода, я теперь сталкиваюсь с проблемами тайм-аута, и мне нужен совет, чтобы решить эту проблему. Я получаю сообщение «Истекло время ожидания выполнения. Время ожидания истекло до завершения операции или сервер не отвечает». Большинство решений, которые я нахожу для конкретной ошибки, рекомендуют модификации строки подключения ИЛИ что-то в этом контексте.CommandTimeout... что я не могу понять, как использовать в этой ситуации.
Я включил метод, который использую для получения нужных данных. Если есть более эффективный способ, пожалуйста, дайте мне знать.
Входные аргументы:
int? inputSKU = null
int? inputStoreNum = null
DateTime? inputStartDate = null
Цель состоит в том, чтобы вернуть полный список.
И зависает, потому что пропускает все условные биты: var qUniqueOffers = query.GroupBy(q => q.Plan_Number).ToList();
Спасибо.
private List<PromotionItem> QueryPromotion(int? inputSKU, int? inputStoreNum, DateTime? inputStartDate)
{
log.Info("Client requested QueryPromotion");
List<PromotionItem> resultQuery = new List<PromotionItem>();
try
{
using (DWH_Entities db = new DWH_Entities())
{
var query = db.vw_Web_Promotion.AsQueryable();
// filter promotion results that don't match SKU#
if (inputSKU != null)
query = query.Where(q => q.Sku_Number == inputSKU);
// filter promotion results that don't match Store Num
if (inputStoreNum != null)
query = query.Where(q => q.Store_Number == inputStoreNum);
// filter promotion results that don't match Promotion Start Date
if (inputStartDate != null)
query = query.Where(q => q.Start_Date >= inputStartDate);
// Group promotions By Plan Number ('Promotion ID')
var qUniqueOffers = query
.GroupBy(q => q.Plan_Number)
.ToList();
// Select first from each group to get unique details
var qOffers = qUniqueOffers
.Select(g => g.OrderBy(gi => gi.Plan_Number).First())
.ToList();
foreach (var qo in qOffers)
{
resultQuery.Add(new PromotionItem
{
PromotionNumber = qo.Plan_Number.Trim(),
PromotionDescription = qo.Plan_Description.Trim(),
StartDate = qo.Start_Date,
EndDate = qo.End_Date
});
}
}
}
catch (Exception e)
{
log.Error("[" + e.TargetSite + "] | " + e.Message);
throw e;
}
return resultQuery;
}
Execution Timeout Expired
? Можете ли вы показать нам его скриншот? - person mjwills   schedule 22.06.2017var qUniqueOffers = query .GroupBy(q => q.Plan_Number) .ToList()
? Это улучшает ситуацию? - person mjwills   schedule 22.06.2017