Я ищу рекомендации / предложения. У меня длительный процесс, который я пытаюсь оптимизировать. Это самый длительный процесс с длительностью 1 мин 48 с на один вызов для возврата заполненного списка. Я повторяю это по 1000 записей на запрос, чтобы вы могли представить, как быстро могут сложиться минуты. Я оптимизировал все другие методы до менее чем 10 секунд на 1000. Я хотел бы иметь возможность ускорить это.
GetLoans () получает данные из базы данных и отправляет их в GetLoanList (), чтобы создать коллекцию для отправки в спокойный веб-сервис.
GetRequestedWatches () возвращает строку типа «1,2», так что это действительно быстро.
переменные с предшествующим '_' являются свойствами уровня класса, которые загружаются при создании экземпляра.
Я пробовал Eager Loading и Lazy Loading. Стремительная загрузка до сих пор была лучшей.
Любые предложения будут оценены.
private List<SBLead> GetLoanList(IEnumerable<LoanCategoryMonitor> loans)
{
return (loans.Where(selectedItem => selectedItem.Loan != null)
.Select(selectedItem => new SBLead
{
ApiKey = _settings.apiKey,
CrmId = selectedItem.LoanNumber.ToString(),
CrmName = _crmName,
LoanType = selectedItem.Loan.Loan_Type,
Email = selectedItem.Loan.abcBorrower?.EMail_Address,
FirstName = selectedItem.Loan?.Borr_First_Name,
LastName = selectedItem.Loan?.Borr_Last_Name,
Address = selectedItem.Loan?.Address,
City = selectedItem.Loan?.City,
State = selectedItem.Loan?.State,
Zip = selectedItem.Loan?.Zip,
Phone = string.Empty,
WatchTypes = GetRequestedWatches(selectedItem.Category.GetEnumFromString<Category>()),
UserEmail = _defaultLoanOfficerEmail,
UserName = _defaultLoanOfficerName
})).ToList();
}
public IEnumerable<LoanCategoryMonitor> GetLoans()
{
var loanCollection = _be.LoanCategoryMonitors
.Include(c => c.Loan)
.Where(r => r.ReadyForUpdate == true && r.LoanExtracts == null &&
r.Category != Category.None.ToString())
.AsNoTracking()
.ToList();
return loanCollection;
}