У меня есть проект C#, в котором несколько элементов хранятся в разных таблицах, например, для подсчета количества элементов в таблице я делаю что-то похожее на следующее:
public int getLengthListProducts(int idCompany)
{
try
{
using (var context = new ccoFinalEntities())
{
return context.products.Where(p => true == p.status && idCompany == p.idCompany).ToList().Count;
}
}
catch
{
return -1;
}
}
До сих пор это работало очень хорошо, но когда количество начинает составлять 1000 единиц, на некоторых компьютерах для получения этого числа требуется некоторое время.
Я подозреваю, что context.products помещает все элементы в ОЗУ, а затем начинает извлекать и подсчитывать те из них, которые соответствуют следующим условиям, и поэтому приложение заморожено до завершения подсчета.
Мой вопрос : Есть ли способ сделать это лучше?
Например, я подумал, что мне следует прибегнуть непосредственно к SQL инструкциям вместо использования EntityFramework для получения этого числа, но я не знаю, будет ли это хорошая идея, или если есть более эффективный способ с EntityFramework.
Любые комментарии или предложения приветствуются.