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

ASP.NET
AspNetPager与Socut.Data使用实例代码
asp.net JavaScript插件 JavaScript Function Outliner
asp.net for循环语句
asp.net access添加返回自递增id的实现方法
asp.net SAF 中缓存服务的实现
asp.net小孔子cms中的数据添加修改
asp.net自定义控件代码学习笔记
用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中
.net三层结构初探分析
asp.net+js实时奥运金牌榜代码
asp.net SqlHelper数据访问层的使用
asp.net中利用ashx实现图片防盗链的原理分析
asp.net 2.0多语言网站解决方法
Ajax.net Sys未定义错误解决办法
.dll 文件反编译的工具软件集合
asp.net gridview 72般绝技
常用的在数据库中建立无限级树形菜单的asp.net代码
asp.net生成静态页并分页+ubb
Asp.net 通用万级数据分页代码[修正下载地址]
较为全面的Asp.net提交验证方案分析 (上)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 91 ::
收藏到网摘: 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