Sharepoint 2010, получить разные значения свойства профиля пользователя? - PullRequest
4 голосов
/ 07 июня 2010

Есть ли в SharePoint 2010 какой-либо способ получить разные значения свойства среди всех пользователей? Например, я хочу получить список всех отделов в хранилище профилей.

В SQL я могу сделать

SELECT DISTINCT(PropertyVal) FROM [ProfileDB].[dbo].[UserProfileValue]
WHERE PropertyID = 14

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

Обратите внимание, что доступ к списку информации о пользователях на сайте SPS недостаточно хорош, поскольку в этом списке присутствует только часть всех пользователей. Я хочу получить его прямо из магазина профилей.

Ответы [ 3 ]

0 голосов
/ 18 июня 2010

Похоже, у вас есть несколько вариантов, и ни один из них не идеален ...

  1. Вы выбираете все профили, просматриваете и добавляете уникальные значения в хеш-таблицу, чтобы выбрать отдельные. Хотя для этого также требуется много разрешений.

  2. Добавьте SP в базу данных и сделайте это там, и есть риск, что команда Sharepoint изменит формат базы данных. Это, вероятно, не поддерживается, но, вероятно, не слишком опасно, это не значит, что вы меняете формат таблицы, и вы всегда можете переписать sp в случае, если команда sharepoint внесет изменение.

Если бы у меня была эта задача, я бы скорее всего создал хранимую процедуру

0 голосов
/ 01 ноября 2010

Я использовал метод запроса базы данных Sharepoint напрямую. Не очень, но прагматизм победил.

0 голосов
/ 15 июня 2010

Запись в блоге Профили пользователей Sharepoint описывает, как получить все профили пользователей из центрального хранилища профилей. В MSDN есть описание класса UserProfileManager и настройка хранилища профилей пользователей с использованием объектной модели .

Кажется, во всех случаях для предоставления контекста необходим SPSite. Вы должны быть в состоянии получить все профили, передав URL вашего сервера sharepoint. Коллекция UserProfileManager.UserProfiles обеспечивает доступ ко всем профилям пользователей.

Чтобы получить все отдельные значения свойства профиля для всех пользователей, выполните итерацию по всем профилям, извлеките требуемое значение свойства и добавьте его в хэш-набор. В конце итерации хэш-набор содержит все различные значения.

Это не будет столь же эффективно, как прямой запрос базы данных - кажется, что объектная модель не предназначена для того, чтобы разрезать данные так, как вы хотите - но она даст вам результаты, проходящие через официально поддерживаемые каналы. 1015 *

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