我是新来的dotnetnuke和asp.net。我需要创建一个易于在不同的DNN站点上安装的模块包。问题是需要手动添加SQL表和其他数据库对象。我希望在部署包时自动添加它们。正如我所说,我对这一切都是陌生的,一步一步的解释将是非常有帮助的。创建一个易于安装sql数据库的dotnetnuke包
感谢,
伊莲娜
我是新来的dotnetnuke和asp.net。我需要创建一个易于在不同的DNN站点上安装的模块包。问题是需要手动添加SQL表和其他数据库对象。我希望在部署包时自动添加它们。正如我所说,我对这一切都是陌生的,一步一步的解释将是非常有帮助的。创建一个易于安装sql数据库的dotnetnuke包
感谢,
伊莲娜
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文件中的文件,你应该是好去。
这是通过的SqlDataProvider文件处理。
注意,当你创建VS2010(或VS2008)一个DotNetNuke的编译的模块项目,你结束了三个这样的文件,其中两个是在这里关注的(我认为)
注意执行的,有指向这些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的任何其他模块一样安装它。
我的建议是做自定义模块开发以下
我用这两个资源,发现他们非常有用
以上是我在搞清楚DNN开发过程中所获得的并行知识,但我认为这是对过程的很好总结。我们的模块是特定于客户端的,所以我们不使用sql安装程序文件;但是,当我们开发待售模块时,我肯定会使用它们。 – 2011-04-30 15:32:09
谢谢哈姆林。我会试试这个。正如我所说的,我对这一切都很陌生,我的第一个项目是弄清楚这一点。它可能不像看起来那么难。我会让你知道我得到了多少。 – Jelena 2011-04-30 22:08:28
没问题 - Mitchel卖家的书很好的一步一步地经历着这一切。他在Stackoverflow也是一个很大的贡献者。 – 2011-05-01 01:30:31