個性化用戶配置(用戶自定義屬性)表
由此表結構可以看出,所有的用戶自定義屬性最後都是“打包”(序列化)成一個或兩個數據塊,
存放在PropertyValuesString(序列化爲string、Xml) 和(或) PropertyValuesBinary(序列化爲Binary)
兩個(或其中之一)字段中,因此要求用戶自定義屬性必須支持序列化。
序列化方式可由web.config中的serializeAs指定,SqlProfileProvider默認序列化方式爲String。
例如用戶在web.config中配置瞭如下自定義屬性,這裏的serializeAs="String" 僅僅爲了表示
可以用戶可以自行指定序列化方式,謝不寫是一個樣的:
<system.web>
...
<connectionStrings>
<add connectionString="..."/>
</connectionStrings>
...
<profile defaultProvider="SqlSrvProfileProvider">
<providers>
...
</providers>
<properties>
<add type="System.String" serializeAs="String" />
<group >
<add type="System.String" serializeAs="String" />
<add type="System.String" serializeAs="String" />
<add 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個表
關係圖
有關頁面個性化設置的3個表
關係圖
頁面路徑(地址)表
處於共享範圍(Shared Scope)的頁面個性化設置表
處於單用戶範圍(User Scope)的頁面個性化設置表
視圖
- aspnet_Applications表的全表視圖。
vw_aspnet_Applications - aspnet_Membership表與aspnet_Users表的關聯視圖
vw_aspnet_MembershipUsers - 返回aspnet_Profiles表的用戶ID、上次修改時間
和屬性名稱串、字符串屬性值、二進制屬性值的總長度
vw_aspnet_Profiles - aspnet_Roles表的全表視圖。
vw_aspnet_Roles - aspnet_Users表的全表視圖。
vw_aspnet_Users - aspnet_UsersInRoles表的全表視圖。
vw_aspnet_UsersInRoles - aspnet_Paths表的全表視圖。
vw_aspnet_WebPartState_Paths - 返回aspnet_PersonalizationAllUsers表的頁面路徑ID、
以二進制形式保存的頁面配置屬性的長度和上次修改時間。
vw_aspnet_WebPartState_Shared - 返回aspnet_WebPartState_User表的頁面路徑ID、用戶ID、
以二進制形式保存的頁面配置屬性的長度和上次修改時間。
vw_aspnet_WebPartState_User