在DotNetNuke3.0中,如果我們用英文版安裝的時候,在數據庫中我們可以看到大部分表都有一個前綴“_DNN”。為什麼要設置這個前綴呢,是因為利用objectqualifier(表現為前綴),可以允許在同一個數據庫中建立多個主機。在每個存儲過程和表中都指定了objectqualifier。例如,你可以設置一個主機利用 'DNN1'作為前綴,同時設置另一個主機的前綴為'DNN2'。通過這種方式,可以在同一個數據庫中生成兩個用戶表,其結構一致,功能一致,但是一個表名為“DNN1_Portals”,另一個表名為“DNN2_Portals”。這兩個表且能夠在同一個數據庫並行運行,而不相互影響。
在什麼地方設置表安裝時候的前綴呢?在DNN3.0 web.config(第273行)中,我們可以看看
<data defaultProvider="SqlDataProvider">
<providers>
<clear />
<add name="SqlDataProvider"
type="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider"
connectionStringName="SiteSqlServer"
upgradeConnectionString=""
providerPath="~\Providers\DataProviders\SqlDataProvider\"
objectQualifier="DNN"
databaseOwner="dbo" />
</providers>
</data>
在這個xml節中,objectQualifier="DNN"設置了前綴,所有的表和存儲過程,就加上了這個相應地前綴。上邊的實例中,只不過在這裡設置了兩個不同的前綴而已,一個為"DNN1",一個為"DNN2"罷了。
接下來,我們先看看在創建表和存儲過程的SQL腳本中,其具體實現。
CREATE TABLE {databaseOwner}{objectQualifier}PortalAlias (
[PortalAliasID] [int] IDENTITY (1, 1) NOT NULL ,
[PortalID] [int] NOT NULL ,
[HTTPAlias] [varchar] (200)
) ON [PRIMARY]
GO
CREATE procedure {databaseOwner}{objectQualifier}GetPortalByAlias
@HTTPAlias nvarchar(200)