Добро пожаловать в мир боли - Odata - отличная идея с довольно плохой реализацией. Но да, это удивительно - делать это самому.
он использует только данные Опубликовать мой запрос, что вынуждает меня заранее построить все отношения.
Если это спросить, что я думаю, что он делает (ваш engli sh ОЧЕНЬ неясен), то нет, это не так - ваша ошибка состоит в том, что вы выставляете объекты ef напрямую. У меня есть отдельные объекты API и выставить их с помощью AutoMapper ProjectTo. Да, мне нужно определять отношения заранее, но не на уровне ef.
Мне нужно использовать EF Include заранее.
Это потому, что вы решили. Я активно использую, как я уже сказал, Automapper ProjectTo - и получаю необходимые расширения из информации OdataOptions SelectExpand динамически. Не нужно отправлять весь объектный граф в EF (что происходит, если вы расширяете все возможные расширения с помощью включений), это приведет к очень плохой производительности. Просто страница программирования для получения соответствующих включений.
Будет ли конечная точка oData внедряться между EF и DB и выбирать только 100 результатов из DB в этом случае?
если это запрограммировано так, то да. Если кто-то испытывает трудности с программами LINQ и упаковывает ef в один из нелепых неэффективных шаблонов репозитория, которые возвращают IENumerable - тогда нет, он, возможно, потянет все. Там было видно это. Но обычно TOP (1) приводит к sql, выбирающему только первый элемент.