Linq to Entity Query. Expand - PullRequest
       14

Linq to Entity Query. Expand

0 голосов
/ 23 февраля 2012

Я получил следующие таблицы TableA, TableB, TableC, TableD, TableE, и они имеют отношения внешнего ключа, такие как FK_AB (один ко многим), FK_BC (один к одному), FK_CD (один ко многим), FK_DE (один к одному) и имеют свойства навигации, основанные на этих внешних ключах Теперь я хочу запросить TableA и получить записи из TableA, TableD и TableE, для которых столбец Loadedby равен System. Мой запрос как ниже

var query= from A in Context.TableA.Expand(TableB/TableC/TableD).Expand(TableB/TableC/TableD/TableE)
           where A.Loadedby=="System"
           select A;

Приведенный выше запрос работает нормально. Я хочу, чтобы записи из TableD и TableE, для которых значение Loadedby было равно System, но в приведенном выше запросе возвращаются все записи из TableD и TableE, относящиеся к записи TableA, удовлетворяющие A.Loadedby = "System", это условие не проверяется в дочерних таблицах.

Может кто-нибудь сказать мне, как фильтровать дочерние таблицы также.

1 Ответ

0 голосов
/ 28 февраля 2012

В настоящее время OData поддерживает фильтры только на верхнем уровне. Таким образом, в приведенном выше примере он может фильтровать только строки из таблицы A. Внутри расширений будут включены все подходящие строки, всегда нет способа отфильтровать их прямо сейчас. Вы можете запросить расширенные сущности отдельно с дополнительными запросами (с правильным фильтром) и, возможно, использовать пакетную обработку для группировки всех запросов в одном запросе. Но это зависит от того, какой запрос нужно отправить.

...