Использование LINQ для сущностей с Entity Framework и C #:
У меня есть метод, который называется CanInactivateReason, который проверяет отсутствие активных связанных записей, прежде чем разрешить пользователю инактивировать причину.Если метод возвращает значение false, то отображается изображение «DisabledDelete» со всплывающей подсказкой, информирующей пользователя, почему он не может удалить объект в сетке, вместо кнопки «Удалить».Моя проблема заключается в производительности, когда запросы возвращают все связанные объекты вместо того, чтобы делать топ 1 для каждого свойства навигации.
. Метод расширения .Take (1) не добавляет топ (1) в мой запрос LINQ to Entities -почему ??
Также .Count ()> 0 или .Any () или .Take (1) .ToArray (). Any () или .FirstOrDefault ()! = null
Вот мой метод, который возвращает bool, поэтому я бы предпочел, чтобы запросы были топ-1 - я попробовал каждый элемент ниже:
public bool CanInactivateReason(Reason reasonToInactivate)
{
bool canInactivate = true;
if (reasonToInactivate.ProductReasons.Select(pa => pa).Where(pa => pa.Inactive == false).Count() > 0)
{
canInactivate = false; // Still active products associated
}
if (reasonToInactivate.EnhancementReasons.Select(ea => ea).Where(ea => ea.Inactive == false).Any())
{
canInactivate = false; // Still active enhancements associated
}
if (reasonToInactivate.SuggestionReasons.Select(sa => sa).Where(sa => sa.Inactive == false).Take(1).ToArray().Any())
{
canInactivate = false; // still active suggestions associated
}
if ((reasonToInactivate.SessionProductReasons.Select(spr => spr).Where(spr => spr.Inactive == false).FirstOrDefault()) != null)
{
canInactivate = false; // Still active sessions associated
}
return canInactivate;
}
Я предполагаю, что это связано с доступом к связанным объектам моего объекта, но чтоя могу сделать, чтобы превратить эти запросы в сгенерированный SQL top (1)?
Заранее спасибо!