为了保持DNN对数据访问的通用性,DNN3的开发者们对数据调用进行了精心的设计。下面就让我们一起来领略DNN优异的数据访问方案吧!
DNN的首先数据库是SqlServer,但绝不是局限于使用SqlServer而是适用于所有的存储方案。如:Oracle,Access......等,甚至可以是Xml文件或是一般的文本文件。
Dnn3使用何种数据访问方案,是由web.config中的配置决定的。
- **数据访问方案配置读取
1<sectiongroup name="dotnetnuke">
2<section name=" data " type=" DotNetNuke.Framework.Providers.ProviderConfigurationHandler, DotNetNuke "></section>
3</sectiongroup>
** 该节配置决定了,Dnn的数据访问方案的配置是通过 DotNetNuke 命名空间中的 DotNetNuke.Framework.Providers.ProviderConfigurationHandler 类来处理的 **。
**
2. 具体的数据访问方案配置参数
**
1<appsettings>
2<add key=" SiteSqlServer " value=" Server=192.168.0.5;Database=DNN;uid=sa;pwd=good ;"></add>
3</appsettings>
**
该节配置添加了一个Appsetings的选项,一般来说是作为数据库连接的配置,这里你可以根据自己的需要,改成其他的名字和字符串值。
- 模块使用的数据访问方案配置
在web.config中,你会发现多处类似于以下配置的内容,
**
1<providers>
2<add applicationname="/" connectionstringname=" SiteSqlServer " description="Stores and retrieves roles data from the local Microsoft SQL Server database" name=" DNNSQLRoleProvider " type="DotNetNuke.Security.Role.DNNSQLRoleProvider, DNNSQLRoleProvider"></add>
3</providers>
**
这些配置节是DNN用来为每个模块设置数据访问方案的,所以我们甚至可以为DNN的各个模块设置不同的数据访问方案,当然也就可以使用多个不同的数据库了。
- 系统使用的数据访问方案配置
下面该是最重要的配置节出场了
1<dotnetnuke>
2** <data defaultprovider="SqlDataProvider">
3<providers>
4<clear></clear>
5<add connectionstringname=" SiteSqlServer " databaseowner="dbo" name="SqlDataProvider" objectqualifier="" providerpath="~\Providers\DataProviders\SqlDataProvider\" type="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider" upgradeconnectionstring=""></add>
6</providers>
7</data>
8** </dotnetnuke>
这一节是DNN主程序配置数据访问方案的地方, defaultProvider 指明了当没有特殊指定的情况下Dnn内部各模块应该使用的数据访问对象。在
1<data>节,你可以添加多个数据访问对象 **。
2<clear></clear> ** 表示清除所有的数据访问对象,
3** <add> ** 表示添加一个数据访问对象。
4**type:** 指明实现该数据访问对象的实际的类,由于DNN使用 **反射的原理** 来创建具体的数据访问对象,所以一定要确保实现该类的装配件是可访问的。
5**connectStringName:** 配置数据连接方案的配置节的名字
6** upgradeConnectionString: ** 更新数据库时使用的连接配置节的名字,如果保持为空,表示使用和connectStringName相同的值。
7** providerPath: ** 实现数据访问对象的装配件的位置
8**objectQualifier:** 用于区别数据库中不同对象的标识,这样当包含多个站点时其生成的表和存储过程会自动添加该前缀,以和其他站点区分开来。
9**databaseOwner:** 这个就不多说了。</add></data>