我是dotnetnuke和asp.net的新手。我需要创建一个易于在不同DNN站点上安装的模块包。问题是需要手动添加SQL表和其他数据库对象。我希望在部署软件包时自动添加它们。正如我所说,我是这一切的新手,一步一步的解释将是非常有帮助的。
谢谢,
耶莱娜
答案 0 :(得分:4)
这由SqlDataProvider文件处理。
请注意,当您在VS2010(或VS2008)中创建DotNetNuke编译模块项目时,最终会得到三个这样的文件,其中两个是关注的(我认为)
请注意,在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文件,你应该好好去。