创建一个易于安装SQL数据库的dotnetnuke包



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

谢谢,

伊莲娜

这是由SqlDataProvider文件处理的。

注意,当你在VS2010(或VS2008)中创建DotNetNuke编译模块项目时,你最终会得到三个这样的文件,其中两个是这里关注的(我认为)

  • 01.00.00。
  • 模块安装时执行SqlDataProvider
  • 卸载。SqlDataProvider在卸载时运行

注意在你的DNN Manifest文件中,有指向这些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购买的任何其他模块一样安装它。

我的建议是做以下的

  • 观看最近DNNCreative自定义模块开发的培训视频。他们详细地解释了这个过程。
  • 阅读米切尔卖方的书:http://www.amazon.com/Professional-DotNetNuke-Programming-Mitchel-Sellers/dp/0470171162 -它解释了所有有趣的调整SQL脚本/清单,以支持您的模块的多个版本

我使用了这两个资源,发现它们非常有用

好的我已经经历了这一切,并愿意与那些可能仍在挣扎的人分享。一旦你创建了一个包,你需要解压缩它并编辑一些文件。看一下包中的.dnn文件。正如Hamlin指出的那样,您需要添加脚本(而不是文件),这些脚本将执行SQL脚本并创建表、存储过程和其他数据库对象。下面是我添加到dnn文件中的代码部分。它被添加到components标记中。

  <components>
     <component type="Script">
         <scripts> 
            <basePath>DesktopModulesUserComments</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   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 asx .vb和ascx file中)。我用这个代码从网上获取信息。配置文件,并使连接适用于任何站点。

vb文件:

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

ascx file:

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

然后将所有文件(包括新的数据提供程序文件)打包到一个zip文件中,您应该就可以开始了。

最新更新