使用易于安装的sql数据库创建一个dotnetnuke包

时间:2011-04-30 05:18:40

标签: sql database dotnetnuke package dataprovider

我是dotnetnuke和asp.net的新手。我需要创建一个易于在不同DNN站点上安装的模块包。问题是需要手动添加SQL表和其他数据库对象。我希望在部署软件包时自动添加它们。正如我所说,我是这一切的新手,一步一步的解释将是非常有帮助的。

谢谢,

耶莱娜

2 个答案:

答案 0 :(得分: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时可能购买的任何其他模块一样安装它。

我的建议是做以下

我使用了两种资源并发现它们非常有用

答案 1 :(得分:4)

O.K。我已经完成了这项工作,并希望与那些可能仍在苦苦挣扎的人分享。创建包后,您需要解压缩并编辑一些文件。看一下包中的.dnn文件。正如Hamlin指出的那样,您需要添加将执行SQL脚本并创建表,存储过程和其他数据库对象的SCRIPTS(而不是文件)。这是我添加到dnn文件的代码部分。它被添加到components标签中。

  <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"> 

您需要输入路径,文件类型,文件名和版本。然后,您需要创建清单中指示的dataprovider文件。我使用{databaseOwner}和{objectQualifier}来确保新数据库对象符合它们将要安装的服务器。这些是区分大小写的,所以要小心,否则你会收到错误。这是我的dataprovider文件的样子:

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   moduleid=@moduleid
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 moduleid=@moduleid
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 %>"  

然后将包括新dataprovider文件在内的所有文件打包成一个zip文件,你应该好好去。

相关问题