我有一个ASP.NET应用程序。我使用用户配置文件进行身份验证。我使用SQL Server作为数据提供程序。我想要做的是使用额外的配置文件信息填充GridView控件,以显示系统中所有用户的信息。
目前,我的做法是:
英译中:
但是这只给我标准用户字段,如电子邮件、最后活动日期等。后来我尝试为GridView表中的每一行调用该函数。
但我认为每个包含档案信息的字段都查询数据库并不高效。我在考虑连接
这意味着我必须解析字符串以获取我的值。
我的问题是:
目前,我的做法是:
UserAccounts.DataSource = Membership.GetAllUsers();
UserAccounts.DataBind();
英译中:
有了这个,我可以创建一个包含“用户名”和“电子邮件”的列表。但现在我想添加名字和姓氏字段,将其存储为个人资料信息。
我找到了这篇帖子,并尝试按照以下方式操作:
ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
DateTime lastActivity = profiles["some_username"].Email;
但是这只给我标准用户字段,如电子邮件、最后活动日期等。后来我尝试为GridView表中的每一行调用该函数。
public string GetProfileValue(string name, string UserName)
{
ProfileBase pb = ProfileBase.Create(UserName, true);
return pb.GetPropertyValue(name).ToString();
}
但我认为每个包含档案信息的字段都查询数据库并不高效。我在考虑连接
aspnet_Users
和 aspnet_Profile
表,但FirstName和LastName字段是这样存储的:UserId | PropertyNames | PropertyValuesString | ....
----------------------------------------------------------------------
someId | FirstName:S:0:6:LastName:S:6:5: | ThomasSmith | ....
这意味着我必须解析字符串以获取我的值。
我的问题是:
- 直接使用
SELECT
查询aspnet_
表是否是一个好策略? - 如何获取包含用户名、电子邮件、最后活动日期、名字和姓氏(标准和个人资料信息)的 GridView。