Web.config 文件包含了许多配置节来使DataProvider模式起作用。第一个配置节注册了这些提供者(Providers)和他们相应的配置节处理方法(ConfigurationSectionHandlers)。尽管在这个例子中我们仅仅展示了DotNetNuke配置节组中的一个,我们可以通过类似的方法配置其它的提供者(也就是抽象验证提供者等等)。但有一点是必须保证的,那就是web.config文件中必须实现这些配置节。
<configSections>
<sectionGroup name="dotnetnuke">
<section name="data" type="DotNetNuke.ProviderConfigurationHandler, DotNetNuke" />
sectionGroup>
configSections>
下面的配置节是为老式的数据访问方法的模块而保留的:
<appSettings>
<add key="connectionString" value="Server=localhost;Database=DotNetNuke;uid=sa;pwd=;" />
appSettings>
如上最终实现了大量的提供者模块。配置组中的配置节名称需要有一个默认的提供者(defaultProvider)属性,这个属性依赖于下面的集合中的特定的实例。在从一个provider转变为另一个provider的时候defaultProvider被用来作为单一的转换器。如果没有指定默认的provider,这个配置集合中的第一项就被认为是默认的。
配置节也包含了一个集合说明,确定了所有的实现都是唯一的。每一个provider都必须至少包含name、type和providerPath属性(name不是特定的但是通常相应的类名,type指定了provider相关的强类名,providerPath指定了provider的特殊资源例如脚本在哪里)。每一个提供者同样可以有多个自定义属性。
<dotnetnuke>
<data defaultProvider="SqlDataProvider" >
<providers>
<clear/>
<add name = "SqlDataProvider"
type = "DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider"
connectionString = "Server=localhost;Database=DotNetNuke;uid=sa;pwd=;"
providerPath = "~\database\SqlDataProvider\"
objectQualifier = "DotNetNuke"
databaseOwner = "dbo"
/>
<add name = "AccessDataProvider"
type = "DotNetNuke.Data.AccessDataProvider, DotNetNuke.AccessDataProvider"
connectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
providerPath = "~\database\AccessDataProvider\"
objectQualifier = "DotNetNuke"
databaseFilename = "DotNetNuke.mdb"
/>
providers>
data>
dotnetnuke>
下面是对providers集合中的节点作用的详细说明。
配置节包含了一个或多个、、元素。下面的规则应用在处理这些元素的时候:
1、 声明一个空的不是错误。
2、 Providers继承了父配置中声明的项。
3、 如果某项已经存在了或被继承了再用重新定义那么这是错误的。
4、 一个不存在的项是错误的。
5、 如果一个项被后又被了,然后再这个完全相同的项是可以的(不是错误)。
6、 如果一个项, >,然后再是可以的(不是错误的)。
7、 会清除所有在先前定义的和继承的项。例如:先用声明再用清除那么项就不存在了,而在后再声明的项是不会被清除的。
| |
描述 | 增加一个数据提供者(data provider)。 |
属性 | Name——provider的友好的名称。 Type——一个实现了provider接口的类。这个值是一个程序集的完整的关联。 providerPath——查找provider的特殊资源(如脚本)的路径。 其它name/value对——也许还有一些附加的名称/值对,所有的名称/值对都是provider能够理解的(处理的)。 |
| |
描述 | 清除一个指定的数据提供者 |
属性 | Name——要清除的provider的友好名称。 |
| |
描述 | 清除所有的继承的提供者。 |
\Components\Provider.vb
Provider.vb类提供了所有的实现细节,这些实现包括从web.config文件加载provider的信息以及应用, , 处理的规则(标准)。这是一个通用的(generic)类,它不仅仅适用于数据访问。
\Components\DataProvider.vb
DataProvider.vb是一个抽象类,这个类包含了DNN的所有的数据访问方法。它包含了一个工厂本身的实例方法(Instance()),它负责在运行时动态加载web.config中描述的合适的程序集。
' unique provider name used for caching
Private Const ProviderType As String = "data"
Private Const ProviderName As String = ""
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-414842/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12639172/viewspace-414842/