1. 程式人生 > >一、ASP.NET四大“外掛”的總後臺--ASPNETDB (資料庫關係圖、表和檢視 基本表和獨立表)

一、ASP.NET四大“外掛”的總後臺--ASPNETDB (資料庫關係圖、表和檢視 基本表和獨立表)

個性化使用者配置(使用者自定義屬性)表

由此表結構可以看出,所有的使用者自定義屬性最後都是“打包”(序列化)成一個或兩個資料塊,
存放在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)的頁面個性化設定表



檢視
  1. aspnet_Applications表的全表檢視。

    vw_aspnet_Applications
  2. aspnet_Membership表與aspnet_Users表的關聯檢視

    vw_aspnet_MembershipUsers
  3. 返回aspnet_Profiles表的使用者ID、上次修改時間
    和屬性名稱串、字串屬性值、二進位制屬性值的總長度

    vw_aspnet_Profiles
  4. aspnet_Roles表的全表檢視。

    vw_aspnet_Roles
  5. aspnet_Users表的全表檢視。

    vw_aspnet_Users
  6. aspnet_UsersInRoles表的全表檢視。

    vw_aspnet_UsersInRoles
  7. aspnet_Paths表的全表檢視。

    vw_aspnet_WebPartState_Paths
  8. 返回aspnet_PersonalizationAllUsers表的頁面路徑ID、
    以二進位制形式儲存的頁面配置屬性的長度和上次修改時間。

    vw_aspnet_WebPartState_Shared
  9. 返回aspnet_WebPartState_User表的頁面路徑ID、使用者ID、
    以二進位制形式儲存的頁面配置屬性的長度和上次修改時間。

    vw_aspnet_WebPartState_User