Запрос Linq для всех сайтов и дочерних сайтов на сервере sharepoint? - PullRequest
3 голосов
/ 30 июня 2010

Я работаю над веб-частью для установки на sharepoint 2010. У этого есть несколько сайтов, и у каждого сайта есть страницы, и могут быть дочерние сайты, сами с большим количеством страниц и сайтов. Я хочу получить список всех страниц во всей установке, которые соответствуют определенным критериям (например, title == "Test").

Я могу сделать это, используя объект CAML SPSiteDataQuery и установив для свойства 'Webs' значение <Webs Scope="Recursive" />. Очевидно, это заставляет запрос учитывать текущий сайт и все дочерние сайты.

С другой стороны, я хочу использовать linq2sp, если это возможно, так как это облегчит изучение другим разработчикам. Используя SPMetal, я могу сгенерировать DataContext для своего сайта, а затем запросить его с помощью linq, однако при этом будут доступны только страницы корневого сайта.

Есть ли какой-нибудь способ контролировать объем запроса Linq, чтобы он работал на всех страницах всех сайтов?

спасибо, S

1 Ответ

1 голос
/ 08 июля 2010

После ... размышления ... может показаться, что вам (и всем нам) не повезло. LINQ to Sharepoint преобразует запросы в объекты SPQuery, которые можно использовать только для запроса определенных списков. SPSiteDataQuery не используется нигде в сборке Microsoft.SharePoint.Linq. Я предполагаю, что вы могли бы перебрать все списки, выполняющие один и тот же запрос, но это было бы ужасно неэффективно.

Вы можете ограничить определенные списки только папками, используя метод EntityList .ScopeToFolder .

Возможный обходной путь - использовать собственного поставщика Sharepoint LINQ, который поддерживает межсайтовые запросы, такие как этот . Я не использовал его, поэтому я не могу ручаться за это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...