Когда вы запрашиваете свойство 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?