DotNetNuke3研究報告二(數(shù)據(jù)訪問)
2024-07-21 02:22:49
供稿:網(wǎng)友
為了保持dnn對數(shù)據(jù)訪問的通用性,dnn3的開發(fā)者們對數(shù)據(jù)調(diào)用進(jìn)行了精心的設(shè)計。下面就讓我們一起來領(lǐng)略dnn優(yōu)異的數(shù)據(jù)訪問方案吧!
dnn的首先數(shù)據(jù)庫是sqlserver,但絕不是局限于使用sqlserver而是適用于所有的存儲方案。如:oracle,access......等,甚至可以是xml文件或是一般的文本文件。
dnn3使用何種數(shù)據(jù)訪問方案,是由web.config中的配置決定的。
數(shù)據(jù)訪問方案配置讀取
<sectiongroup name="dotnetnuke">
<section name="data" type="dotnetnuke.framework.providers.providerconfigurationhandler, dotnetnuke" />
</sectiongroup>
該節(jié)配置決定了,dnn的數(shù)據(jù)訪問方案的配置是通過dotnetnuke命名空間中的dotnetnuke.framework.providers.providerconfigurationhandler類來處理的。
具體的數(shù)據(jù)訪問方案配置參數(shù)
<appsettings>
<add key="sitesqlserver" value="server=192.168.0.5;database=dnn;uid=sa;pwd=good;" />
</appsettings>
該節(jié)配置添加了一個appsetings的選項,一般來說是作為數(shù)據(jù)庫連接的配置,這里你可以根據(jù)自己的需要,改成其他的名字和字符串值。
模塊使用的數(shù)據(jù)訪問方案配置
在web.config中,你會發(fā)現(xiàn)多處類似于以下配置的內(nèi)容,
<providers>
<add name="dnnsqlroleprovider"
type="dotnetnuke.security.role.dnnsqlroleprovider, dnnsqlroleprovider"
connectionstringname="sitesqlserver"
applicationname="/"
description="stores and retrieves roles data from the local microsoft sql server database" />
</providers>
這些配置節(jié)是dnn用來為每個模塊設(shè)置數(shù)據(jù)訪問方案的,所以我們甚至可以為dnn的各個模塊設(shè)置不同的數(shù)據(jù)訪問方案,當(dāng)然也就可以使用多個不同的數(shù)據(jù)庫了。
系統(tǒng)使用的數(shù)據(jù)訪問方案配置
下面該是最重要的配置節(jié)出場了
<dotnetnuke>
<data defaultprovider="sqldataprovider">
<providers>
<clear />
<add name="sqldataprovider"
type="dotnetnuke.data.sqldataprovider, dotnetnuke.sqldataprovider"
connectionstringname="sitesqlserver"
upgradeconnectionstring=""
providerpath="~/providers/dataproviders/sqldataprovider/"
objectqualifier=""
databaseowner="dbo" />
</providers>
</data>
</dotnetnuke>
這一節(jié)是dnn主程序配置數(shù)據(jù)訪問方案的地方,defaultprovider指明了當(dāng)沒有特殊指定的情況下dnn內(nèi)部各模塊應(yīng)該使用的數(shù)據(jù)訪問對象。在<data>節(jié),你可以添加多個數(shù)據(jù)訪問對象。
<clear/>表示清除所有的數(shù)據(jù)訪問對象,
<add >表示添加一個數(shù)據(jù)訪問對象。
type:指明實(shí)現(xiàn)該數(shù)據(jù)訪問對象的實(shí)際的類,由于dnn使用反射的原理來創(chuàng)建具體的數(shù)據(jù)訪問對象,所以一定要確保實(shí)現(xiàn)該類的裝配件是可訪問的。
connectstringname:配置數(shù)據(jù)連接方案的配置節(jié)的名字
upgradeconnectionstring:更新數(shù)據(jù)庫時使用的連接配置節(jié)的名字,如果保持為空,表示使用和connectstringname相同的值。
providerpath:實(shí)現(xiàn)數(shù)據(jù)訪問對象的裝配件的位置
objectqualifier:用于區(qū)別數(shù)據(jù)庫中不同對象的標(biāo)識,這樣當(dāng)包含多個站點(diǎn)時其生成的表和存儲過程會自動添加該前綴,以和其他站點(diǎn)區(qū)分開來。
databaseowner:這個就不多說了。