ASPNETDB 数据库关系图、表和视图 基本表和独立表(转载)
2010-03-12 15:43
344 查看
ASPNETDB 这个隐藏在ASP.NET 2.0四大“插件”(SqlMembershipProvider、SqlRoleProvider、SqlProfileProvider、 SqlPersonalizationProvider)之后,时不时在你App_Data目录下幽灵般出现的SQL数据库,其实也并没什么神奇之处,我等凡夫俗子进去一看,原来也不过如此。不过如果我们要编写自定义Provider的话,还是得仔细研究一下下的,因为这4个Provider大部分的业务逻辑还是“封装”在这个数据库里的。
下面,就容我这个老小弟,为各位兄弟理出里面的表、视图和存储过程。
注:其实还有SqlWebEventProvider,它用到表aspnet_WebEvent_Events和存储过程aspnet_WebEvent_LogEvent。
因为老小弟认为从性能上考虑,写入本地文件是更好的选择,所以在此不作介绍。
另外,还有个和ASPNETDB无关的SiteMapProvider,主要配合SiteMapPath 等控件,一般以Xml文件形式存放站点地图。
看张“地图”先:
数据库关系图
<system.web>
<connectionStrings>
<add name="SqlSrvConnectionString" connectionString=""/>
</connectionStrings>
<profile defaultProvider="SqlSrvProfileProvider">
<providers>
<add name="SqlSrvProfileProvider"
type="System.Web.Security.SqlProfileProvider"
connectionStringName="SqlSrvConnectionString"
applicationName="WebShop"
commandTimeout="30"
description="SqlSrvProfileProvider" />
</providers>
<properties>
</properties>
</profile>
</system.web>
这样你就为你的应用程序注册了一个"WebShop"名称(也可以不明确配置applicationName值,默认为应用程序的虚拟根路径,即"/")。要注意的是如果你那天把"WebShop"改成了"WebShop1"(改成"webshop"、"webShop"等就和没改一样,因为应用程序名称是不区分大小写的),你以前的用户自定义属性值就人间蒸发了,因为ProfileProvider把"WebShop1"当作一个新的应用程序又新注册了一遍(这时候看过我这篇文章的兄弟就该知道怎么办了,哈哈)。
那4个Provider是否一定要配置成同样的applicationName呢?当然不必要啦!你为每个Provider各建一个数据库都没有关系,何况区区applicationName值呢。不过在此老小弟建议各位兄弟,别没事找事,还是取一样的名称好。
2.基本用户表
<system.web>
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1"
/>
<connectionStrings>
<add name="SqlSrvConnectionString" connectionString=""/>
</connectionStrings>
<membership defaultProvider="SqlSrvMembershipProvider">
<providers>
<add name="SqlSrvMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlSrvConnectionString"
applicationName="WebShop"
commandTimeout="30"
description="SqlSrvMembershipProvider"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression=""/>
</providers>
</membership>
</system.web>
角色表
<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
下面,就容我这个老小弟,为各位兄弟理出里面的表、视图和存储过程。
注:其实还有SqlWebEventProvider,它用到表aspnet_WebEvent_Events和存储过程aspnet_WebEvent_LogEvent。
因为老小弟认为从性能上考虑,写入本地文件是更好的选择,所以在此不作介绍。
另外,还有个和ASPNETDB无关的SiteMapProvider,主要配合SiteMapPath 等控件,一般以Xml文件形式存放站点地图。
看张“地图”先:
数据库关系图
<system.web>
<connectionStrings>
<add name="SqlSrvConnectionString" connectionString=""/>
</connectionStrings>
<profile defaultProvider="SqlSrvProfileProvider">
<providers>
<add name="SqlSrvProfileProvider"
type="System.Web.Security.SqlProfileProvider"
connectionStringName="SqlSrvConnectionString"
applicationName="WebShop"
commandTimeout="30"
description="SqlSrvProfileProvider" />
</providers>
<properties>
</properties>
</profile>
</system.web>
这样你就为你的应用程序注册了一个"WebShop"名称(也可以不明确配置applicationName值,默认为应用程序的虚拟根路径,即"/")。要注意的是如果你那天把"WebShop"改成了"WebShop1"(改成"webshop"、"webShop"等就和没改一样,因为应用程序名称是不区分大小写的),你以前的用户自定义属性值就人间蒸发了,因为ProfileProvider把"WebShop1"当作一个新的应用程序又新注册了一遍(这时候看过我这篇文章的兄弟就该知道怎么办了,哈哈)。
那4个Provider是否一定要配置成同样的applicationName呢?当然不必要啦!你为每个Provider各建一个数据库都没有关系,何况区区applicationName值呢。不过在此老小弟建议各位兄弟,别没事找事,还是取一样的名称好。
2.基本用户表
<system.web>
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1"
/>
<connectionStrings>
<add name="SqlSrvConnectionString" connectionString=""/>
</connectionStrings>
<membership defaultProvider="SqlSrvMembershipProvider">
<providers>
<add name="SqlSrvMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlSrvConnectionString"
applicationName="WebShop"
commandTimeout="30"
description="SqlSrvMembershipProvider"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression=""/>
</providers>
</membership>
</system.web>
角色表
<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
相关文章推荐
- ASPNETDB 数据库关系图、表和视图 基本表和独立表(转载)
- ASPNETDB 数据库关系图、表和视图 基本表和独立表(转载)
- ASPNETDB 数据库关系图、表和视图 基本表和独立表(转载)
- ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表(转载)
- ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表
- ASPNETDB 数据库关系图、表和视图 基本表和独立表
- ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表
- 一、ASP.NET四大“插件”的总后台--ASPNETDB (数据库关系图、表和视图 基本表和独立表)
- ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表
- 数据库 基本表和视图的关系与区别
- 数据库基本知识(包括视图、触发器、存储过程、DTS等等)【转载】
- 数据库基本知识II(包括视图、DTS等等)【转载】
- SQL笔记 --- 数据库发展,基本概念,关系数据库理论,关系模型,SQL概述
- 关系数据库标准语言SQL的基本问答
- 数据库中的模式跟基本表、视图、索引的区别
- sqlite3 关系数据库的基本类型和集函数。
- 数据库系统学习(三)- 关系模型之基本概念
- 【数据库】关系代数基本运算
- UI基础:UI中类的继承关系图,最基本的视图分析
- 数据库-数据库、基本表、视图的创建,触发器的使用