1
我非常难以忍受这一点。在增强SharePoint解决方案的现有功能时,我发现他们直接查询Wss_Content。知道我不应该使用该存储过程,我使用SharePoint对象模型从userName中检索用户组信息。什么让我着迷是它比存储过程慢。有更聪明/更快的方式来获取这些信息吗?我们正在使用SharePoint 2007下面大致函数功能:使用Sharepoint的Sharepoint速度问题对象模型:从用户ID获取用户组
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有这种情况的原因是,这是对另一个列表的子查询可能没有与该项目关联的用户。 任何帮助,将不胜感激。
我做了一个简单的winform来测试查询。我在表单加载中初始化SPSite和SPWeb。然后,当我按下按钮时执行该方法。感谢SPDispose检查,我添加了正确的配置,并且之前更快,但仍然比SQL查询更慢。即使我初始化负载上的SPSite和SPWeb,我是否应该始终期望速度更慢? – mcauthorn 2010-12-02 20:34:37