一、ASP.NET四大“外掛”的總後臺--ASPNETDB (資料庫關係圖、表和檢視 基本表和獨立表)
阿新 • • 發佈:2019-01-27
個性化使用者配置(使用者自定義屬性)表
由此表結構可以看出,所有的使用者自定義屬性最後都是“打包”(序列化)成一個或兩個資料塊,
存放在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)的頁面個性化設定表
檢視
由此表結構可以看出,所有的使用者自定義屬性最後都是“打包”(序列化)成一個或兩個資料塊,
存放在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)的頁面個性化設定表
檢視
- 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