




















个性化用户配置(用户自定义属性)表

由此表结构可以看出,所有的用户自定义属性最后都是“打包”(序列化)成一个或两个数据块,
存放在PropertyValuesString(序列化为string、Xml) 和(或) PropertyValuesBinary(序列化为Binary)
两个(或其中之一)字段中,因此要求用户自定义属性必须支持序列化。
序列化方式可由web.config中的serializeAs指定,SqlProfileProvider默认序列化方式为String。
例如用户在web.config中配置了如下自定义属性,这里的serializeAs="String" 仅仅为了表示
可以用户可以自行指定序列化方式,谢不写是一个样的:
<system.web>
...
<connectionStrings>
<add name="SqlSrvConnectionString" connectionString="..."/>
</connectionStrings>
...
<profile defaultProvider="SqlSrvProfileProvider">
<providers>
...
</providers>
<properties>
<add name="ThemeName" type="System.String" serializeAs="String" />
<group name="addPersonalInfo">
<add name="FirstName" type="System.String" serializeAs="String" />
<add name="LastName" type="System.String" serializeAs="String" />
<add name="Birthday" type="System.DateTime" serializeAs="String" />
</group>
</properties>
</profile>
...
</system.web>
并运行了aspx页面中的以下C#代码:
this.Profile.ThemeName = "Blue";
this.Profile.PersonalInfo.FirstName = "John";
this.Profile.PersonalInfo.LastName = "Smith";
this.Profile.PersonalInfo.Birthday = new DateTime(1970, 11, 22);
然后打开数据库中的aspnet_Profile查看表,两个字段的内容分别为:
PropertyNames: "PersonalInfo.FirstName:S:0:4:PersonalInfo.Birthday:S:4:81:PersonalInfo.LastName:S:85:5:ThemeName:S:90:4:"
PropertyValuesString:"John
1970-11-22T00:00:00SmithBlue"
注:以后在实现自定义用户配置提供程序(ProfileProvider) 一文中我会更详尽地讨论。
有关页面个性化设置的3个表
关系图

页面路径(地址)表
处于共享范围(Shared Scope)的页面个性化设置表
处于单用户范围(User Scope)的页面个性化设置表
视图
vw_aspnet_Applications
vw_aspnet_MembershipUsers
vw_aspnet_Profiles
vw_aspnet_Roles
vw_aspnet_Users
vw_aspnet_UsersInRoles
vw_aspnet_WebPartState_Paths
vw_aspnet_WebPartState_Shared
vw_aspnet_WebPartState_User
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。