2011-04-30 83 views
4

我是新來的dotnetnuke和asp.net。我需要創建一個易於在不同的DNN站點上安裝的模塊包。問題是需要手動添加SQL表和其他數據庫對象。我希望在部署包時自動添加它們。正如我所說,我對這一切都是陌生的,一步一步的解釋將是非常有幫助的。創建一個易於安裝sql數據庫的dotnetnuke包

感謝,

伊蓮娜

回答

4

O.K.我已經瞭解了這一點,並希望與那些可能還在掙扎的人分享。一旦你創建了一個包,你需要解壓縮並編輯一些文件。查看包中的.dnn文件。正如Hamlin指出的那樣,您需要添加將執行SQL腳本並創建表,存儲過程和其他數據庫對象的SCRIPTS(而不是文件)。以下是我添加到dnn文件的代碼部分。它被添加到組件標籤。

<components> 
    <component type="Script"> 
     <scripts> 
      <basePath>DesktopModules\UserComments</basePath> 
      <script type="Install"> 
      <name>05.02.05.SqlDataProvider</name> 
      <version>05.02.05</version> 
      </script> 

      <script type="uninstall"> 
      <name>uninstall.sqldataprovider</name> 
      <version>05.02.05</version>  
      </script> 
     </scripts> 
    </component> 
     <component type="Module"> 

在那裏你需要放入路徑,文件類型,文件名和版本。然後您需要創建您在清單中指明的數據提供者文件。我使用{databaseOwner}和{objectQualifier}來確保新的數據庫對象符合它們將要安裝的服務器。這些區分大小寫,所以要小心,否則你會得到錯誤。這裏是我的數據提供程序文件看起來像:

05.02.05.sqldataprovider

ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE {databaseOwner}{objectQualifier}usercomments(
    [moduleid] [int] NULL, 
    [comment] [text] NULL, 
    [date] [datetime] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

create procedure {databaseOwner}sp_viewcomments 
@moduleid int 
AS 
BEGIN 
SET NOCOUNT ON 
    SELECT moduleid, comment, date from {objectQualifier}usercomments where [email protected] 
end 
go 

create PROCEDURE {databaseOwner}sp_usercommentsinsert 
@moduleid int, 
@comment text, 
@commentdate datetime 
AS 
BEGIN 
SET NOCOUNT ON; 
    insert into {databaseOwner}{objectQualifier}usercomments (moduleid, comment, date) values (@moduleid, @comment, @commentdate) 
END 
go 

create PROCEDURE {databasOwner}sp_countcomments 
@moduleid int 
As 
begin 
    SELECT count(*) from {databaseOwner}{objectQualifier}usercomments where [email protected] 
end 
go 

uninstall.sqldataprovider

DROP TABLE  {databaseOwner}{objectQualifier}usercomments 
GO 

drop procedure {databaseOwner}sp_usercommentsinsert 
GO 

drop procedure {databaseOwner}sp_viewcomments 
GO 

drop procedure {databaseOwner}sp_countcomments 
go 

確保sqlconnections適用於新的網站,如果修改在包含連接的文件中是必需的(在我的例子中,我使用了vb ascx.vb和ascx文件)。我使用此代碼從web.config文件中提取信息,並使連接適合於任何站點。

VB文件:

Dim cn As New SqlConnection(ConfigurationManager.ConnectionStrings("sitesqlserver").ConnectionString) 

ASCX文件:

ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>" 

然後打包所有包括新的數據提供程序文件到一個zip文件中的文件,你應該是好去。

4

這是通過的SqlDataProvider文件處理。

注意,當你創建VS2010(或VS2008)一個DotNetNuke的編譯的模塊項目,你結束了三個這樣的文件,其中兩個是在這裏關注的(我認爲)

  • 01.00.00 .SqlDataProvider是在模塊安裝
  • Uninstall.SqlDataProvider是在卸載
  • 在DNN清單文件運行

注意執行的,有指向這些SqqDataProvider文件中的條目:

<file> 
     <name>01.00.00.SqlDataProvider</name> 
    </file> 
    <file> 
     <name>Uninstall.SqlDataProvider</name> 
    </file> 

還要注意,在清單文件,版本號對應前綴上安裝SQL文件:

<version>01.00.00</version> 

最後,您將打包DNN模塊爲.zip文件。確切的結構迴避我,但DNNCreative和下面引用的書有很多的信息。

一旦您擁有了可部署的.zip文件,就可以像安裝SnowCovered的任何其他模塊一樣安裝它。

我的建議是做自定義模塊開發以下

我用這兩個資源,發現他們非常有用

+0

以上是我在搞清楚DNN開發過程中所獲得的並行知識,但我認爲這是對過程的很好總結。我們的模塊是特定於客戶端的,所以我們不使用sql安裝程序文件;但是,當我們開發待售模塊時,我肯定會使用它們。 – 2011-04-30 15:32:09

+0

謝謝哈姆林。我會試試這個。正如我所說的,我對這一切都很陌生,我的第一個項目是弄清楚這一點。它可能不像看起來那麼難。我會讓你知道我得到了多少。 – Jelena 2011-04-30 22:08:28

+0

沒問題 - Mitchel賣家的書很好的一步一步地經歷着這一切。他在Stackoverflow也是一個很大的貢獻者。 – 2011-05-01 01:30:31