我是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文件中,您应该就可以开始了。