程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> DotNetNuke中理解{objectQualifier} {databaseOwner}

DotNetNuke中理解{objectQualifier} {databaseOwner}

編輯:關於ASP.NET

在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)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved