当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > [DNN模块开发]如何写模块数据库安装脚本

ASP.NET
ASP.NET ViewState 初探 (2)
.net中即时消息发送的实现
改写即时消息的发送 包含同时给多人发送信息
asp.NET特写
TreeView使用笔记
ASP.Net中自定义Http处理及应用之HttpHandler篇
Asp.net+Xml实现无数据库论坛一点即通
ASP.NET HTTP运行时组成详解
在ASP.NET 2.0中使用页面导航控件
ASP.net组件编程中的两种事件编写方法
保存图片流到数据库之后固定显示新法
asp.net 2.0中一次性更新所有GRIDVIEW的记录
ASP.NET创建Web服务之设计方针
用ASP.Net(C#)连接Oracle数据库的方法
ASP.Net环境下使用Jmail组件发送邮件
通过探测邮件服务器进行Email地址有效性检验
如何在上传的图片上打自己的文字水印
ASP.NET的14个热点问题解答
.NET中如何取得IP或者用户名等信息
ASP.NET中使用数据处理插入数据注意的问题

ASP.NET 中的 [DNN模块开发]如何写模块数据库安装脚本


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 151 ::
收藏到网摘: n/a

  编写DotNetNuke(以下简称DNN)模块相关数据库安装/卸载脚本,是模块开发的一个重要环节。DNN程序会根据模块相关的脚本自动安装或卸载模块相关的表和存储过程等。

  DNN中模块的数据库安装脚本一般命名为:版本号.具体数据访问Provider名称(如对应SQLServer的安装文件可为:01.00.00.SqlDataProvider)。在上传新模块时,DNN的模块安装程序,会根据DNN文件中所列举的数据库脚本清单,按版本顺序执行数据库脚本。如果是升级安装则只执行大于当模块前版本的数据库安装脚本。所以在编写下一个版本的数据库安装脚本时一定要记住这一点:在原来的基础上修改,而不是全部重写。比如:你有一个模块在下一个版本的改动中只是添加了一个存储过程,那么这个版本的数据库脚本只需包含创建该存储过程的代码即可,无需重写全部对象。同时还要注意模块版本与数据库脚本版本的统一。

  DNN中模块的数据库卸载脚本一般命名为:Uninstall.具体数据访问Provider名称(如对应SQLServer的卸载文件可为:Uninstall.SqlDataProvider)。在删除模块时,DNN会根据这个文件的内容删除模块相关的表和存储过程。

编写脚本的步骤可如下(已SQL Server数据库为例):
1、在数据库中创建要使用到的表和存储过程。
2、可先用SQL Server的查询分析器生成相关表和存储过程的创建/除去脚本。3、将这些对象的脚本复制到一个文件中,并在表和存储过程对象名称前面加上{databaseOwner}{objectQualifier}前缀;在主/外键名称上加上{objectQualifier}前缀,如:PK{objectQualifier}_CLinks、FK_{objectQualifier}CLinks_Modules。
关于{databaseOwner}{objectQualifier}的含义和用途可参见:http://www.cnblogs.com/csdn/archive/2004/11/30/71118.html
4、按照数据库安装/卸载脚本的命名规则分别命名文件。
5、具体的一些做法,也可参照已有模块的数据库安装/卸载脚本文件
6、好像有个模版也可以编写存储过程,不过好像用途不大,有兴趣的可以去看看:
http://dnnjungle.vmasanas.net/Development/Templates/tabid/28/Default.aspx

一个值得注意的问题:
SQL Server数据库的安装/卸载脚本,是通过SqlDataProvider类中的ExecuteScript方法执行的。该方法中有这么一句“Dim Delimiter As String = "GO" & ControlChars.CrLf”,也就是说是以:“GO+回车换行符”来分割一段SQL脚本中每一个可被执行的SQL语句。利用Split分隔每一个语句到一个数组中,通过循环执行每一个SQL。这样我们在写数据库的安装/卸载脚本时一定要注意在每一个语句后面都加上“GO+回车换行符”,特别是最后一句的“回车换行符”一定不能忘记。否则,最后一句要么执行不了,要么会报错。

还有一个值得注意的问题:
数据库的安装/卸载脚本文件必须以utf-8编码格式保存,否则可能会报错。

相关内容:
DNN模块的层次划分:http://www.cnblogs.com/esshs/archive/2005/07/27/201190.html
关于模块文件结构:http://www.cnblogs.com/esshs/archive/2005/07/21/197198.html
关于DNN文件结构:http://www.cnblogs.com/esshs/archive/2005/07/26/200154.html