Проблема со скоростью Sharepoint при использовании Sharepoint Object Model: получить группу пользователей из userID - PullRequest
1 голос
/ 02 декабря 2010

Я весьма озадачен этим. Расширяя существующую функцию до решения SharePoint, я обнаружил, что они запрашивают Wss_Content напрямую. Зная, что я не должен использовать эту хранимую процедуру, я использовал объектную модель SharePoint для получения информации о группе пользователей из userName. Что жжет меня, так это то, что это медленнее, чем хранимая процедура. Есть ли более умный / быстрый способ получить эту информацию? Мы используем SharePoint 2007. Ниже приведено примерное описание функции:

private string GetTitle(string userName)
    {
        string results = string.Empty;
        try
        {                
            SPSite spSite = new SPSite("http://devvm");
            SPWeb spWeb = spSite.AllWebs[""];
            SPUser user = spWeb.AllUsers["aspnetsqlmembershipprovider:" + userName];
            SPGroupCollection groups = user.Groups;
            results = groups[0].Name;
        }
        catch (Exception ex)
        {
            Console.WriteLine("Unable to find user" + userName);
            results = "No Group Found";
        }
        return results;
    }

и код хранимой процедуры:

SELECT @role=Groups.Title
    FROM WSS_Content.DBO.UserInfo  Info
    LEFT JOIN WSS_Content.DBO.GroupMembership Membership 
    ON Info.tp_ID=Membership.MemberID
    LEFT JOIN Wss_Content.DBO.Groups Groups 
    ON Membership.GroupID=Groups.ID
    WHERE tp_Login='aspnetsqlmembershipprovider:' + @username

К вашему сведению, причина, по которой я это сделал в try-catch, заключается в том, что это подзапрос к другому списку, у которого может не быть пользователя, связанного с элементом. Любая помощь в этом будет принята с благодарностью.

1 Ответ

1 голос
/ 02 декабря 2010

Как вы называете этот код?Если вы используете это в консольном приложении, тогда да, это будет медленнее, ему нужно запустить вспомогательные объекты, которые обычно работают, когда это используется в собственном контексте sharepoint.

Кроме того, вы ссылаетесь на объект SPSite и SPWeb без удаления объекта, это также имеет присущие проблемы с производительностью.

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