По-видимому, согласно this вы не можете запросить множество отношений, не загружая всю коллекцию.Другими словами, это LINQ to Objects
вместо LINQ to Entities
запроса.
Например:
Category category = db.Categories.Find(1);
var productsThatStartWithA = category.Products.Where(p => p.Name.StartsWith("A")).ToList();
Приведенный выше запрос загружает все товары в этой категории, а затем применяется фильтр.
Вопрос № 1
Это правильно?Я не могу поверить, насколько это глупо.
Вопрос № 2
Может ли LINQ to SQL
или любой другой LINQ
включен ORM
справиться с этим так, как этодолжен работать?
Альтернативы, представленные в связанном вопросе и Slauma's , являются обходными, а не решениями.Они требуют ссылки на объект контекста, который недоступен, если вы пишете код, отделенный от Entity Framework API, и / или ваш код является объектно-ориентированным, например:
public class Category {
public IEnumerable<Product> GetProductsThatStartWithA() {
return this.Products.Where(p => p.Name.StartsWith("A")).ToList()
}
}