首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

DotNetNuke 核心概念解析:理解 {objectQualifier} 與 {databaseOwner} 的作用與設定

     編輯:關於ASP.NET

在 DotNetNuke 3.0 版本中,若使用英文版安裝,資料庫中的大多數資料表名稱都會帶有「_DNN」前綴。這個前綴並非隨意加入,而是透過 objectQualifier 參數實現,其核心目的是允許在單一資料庫中部署多個獨立的 DNN 主機實例。透過為每個主機指定不同的前綴(如 DNN1、DNN2),即可在同一資料庫中建立結構相同、功能獨立的資料表(例如 DNN1_Portals 與 DNN2_Portals),兩者並行運作互不干擾,極大提升了資源利用率與部署彈性。

前綴在哪裡設定?

在 DNN 3.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>

此處的 objectQualifier="DNN" 即定義了所有資料表與預存程序的前綴。若需部署多主機,只需在各自的 web.config 中分別設定 DNN1、DNN2 等不同值即可。

SQL 腳本中的具體實現

在建立資料表與預存程序的 SQL 腳本中,會使用 {databaseOwner} 與 {objectQualifier} 兩個標記作為佔位符,執行安裝時由系統自動替換為實際值:

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)

這種設計讓 DNN 能夠靈活適應多租戶、多站點的部署需求,是其架構靈活性的重要體現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved