Когда вы запрашиваете свойство EntitySet для объекта модели в Linq-to-SQL, он возвращает все строки из набора сущностей и выполняет дальнейшие запросы на стороне клиента.
Это подтверждается в нескольких местах в Интернете, и я сам наблюдал за этим поведением. EntitySet не реализует IQueryable.
Мне пришлось преобразовать код вроде:
var myChild = ... ;
// Where clause performed client-side.
var query = myChild.Parents().Where(...) ;
в:
var myChild = ... ;
// Where clause performed in DB and only minimal set of rows returned.
var query = MyDataContext.Parents().Where(p => p.Child() == myChild) ;
Кто-нибудь знает лучшее решение?
Второй вопрос: исправлено ли это в Entity Framework?