二十四画生的Blog


        ——开始学习DotNetNuke(DNN)
posts - 85, comments - 1172, trackbacks - 46, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

  在利用CodeSmith Templates进行代码编写之前,我们应该先完成数据表的设计。因为CodeSmith Templates是根据数据表的字段来生成相应代码的。

  首先根据《DNN模块开发系列文章(1)——分析设计》中对MyCompany_Article文章信息表的定义在SQL Server数据库中进行设计。记住要设计好主外键,特别是与Modules表的关联。

  其次,我们还可以将程序所用到存储过程先编写好。在编写存储过程时,我们可以利用CodeSmith Templates中StoredProcedures.cst模版进行编写存储过程。不过它编写好的代码好像和我通常用的命名规则不一样,所以我利用它生成的部分代码,如变量定义部分。这个文章模块的功能比较简单,就是添加、编辑、删除、查看文章,并能列举出这个模块的全部文章。所以我们可以利用5个对应的存储过程来完成,它们是:
MyCompany_Article_Add     添加
MyCompany_Article_Update    编辑
MyCompany_Article_Delete    删除
MyCompany_Article_Get     获取一篇文章
MyCompany_Article_GetByModules   获取该模块的全部文章

  大家可以试着先编写这些存储过程,在这个系列完成后我会给出全部代码。在编写时要注意所有的数据库对象前都需要加上“dbo.”,在存储过程和表的命名上,我们也应该遵循“公司名_模块名_功能名称”的原则,遵循良好的命名规则不但代码看起来可读性更高,而且在后期我们只制作数据库安装脚本时可以方便的利用查找替换的办法快速生成数据库安装脚本。

  利用CodeSmith Templates进行编程,我们当然要利用到CodeSmith这个代码生成利器。你可以在这里 http://www.codesmithtools.com/ 获得它。使用CodeSmith Templates的过程和简单,首先我双击需要用到的模版。通常,我先从Info类入手,双击Vb BLL Info Class.cst模版。首先我们需要选中MultiSourceTable,挑选我们所建立的文章信息表MyCompany_Article,如下图:
1、点击MultiSourceTable属性弹出Table Picker选择窗口,选择表所在的数据库,选择表。如果没有数据库,可以点击添加。

2、添加数据库连接

3、输入ObjectQualifer(任意输,好像没用),点击Generate生成代码

4、将这段代码复制到ArticleInfo.vb文件中

  利用Vb DataProvider.cst生成DataProvider.vb文件代码。在生成时我们设置IncludeList为false,不生成获取全部文章列表的方法。将生成好的代码复制到DataProvider.vb中的相应位置,替换代码中“MyCompany_”前缀。
我们再分别利用Vb BLL Controller Class.cst和Vb SqlDataProvider.cst生成ArticleController.vb和SqlDataProvider.vb中代码,方法和前一种相同。在生成SqlDataProvider代码时,我们还需要修改一下对应的存储过程名称,因为我们命名规则和他的不一样。

  现在我们已经完成了大部分逻辑层和数据访问层代码,剩下就只有表示层的代码了。我们分别修改Article.ascx、ArticleEdit.ascx和Settings.ascx这三个控件,添加一些asp.net控件进去完成设计要求的功能。现在就和开发其它asp.net程序一样了,没有什么其它技巧和难点。只是在编写时注意参考一下DNN其它模块的代码,看看他们都是怎样的结构,DNN Project Templates也为我们添加了不少代码,我们填充完剩下的部分整个模块就算是完成了。

  程序的基本功能完成后,在下一篇文章《DNN模块开发系列文章(8)——实现ISearchable接口》中我将介绍一下如何实现ISearchable接口,让DNN能够找到该模块中的数据并实现文章聚合功能。

 

Feedback

#1楼    回复  引用    

2006-08-26 15:22 by mill [未注册用户]
Ding!

#2楼    回复  引用    

2006-08-26 17:52 by antoknet [未注册用户]
谢谢你给我们写这么好的文章!
我已经把你的文章放到WWW.dnnfamily.com上了!

DotNetNuke(简称DNN)是一个免费、开源、可扩展、几近完美的内容管理系统,同时DNN提供了强大的页面管理功能(皮肤)。DNN可以广泛应用于商务网站、企业内网和外网网站、在线内容发布网站。是建立在微软ASP.NET平台上的一套WEB应用框架。欢迎访问DNN资料大全网站www.DNNfamily.com网站包含了全部的DNN文档、开发技巧、模块、皮肤供大家学习。
www.DNNfamily.com

#3楼    回复  引用    

2006-09-01 16:45 by 草根 [未注册用户]
太经典了,学习中 但怎么没有《DNN模块开发系列文章(8)——实现ISearchable接口》???

#4楼 [楼主]   回复  引用  查看    

2006-09-01 18:16 by 二十四画生      
@草根
呵呵,还没写出来呢。

#5楼    回复  引用  查看    

2006-09-30 16:08 by barton131420      
@二十四画生
终于在园子里找到了一个DNN大家!

#6楼    回复  引用    

2006-10-12 13:37 by ssc [未注册用户]
兄台既然对DNN这么有研究,为何不去参加网站大赛,头奖可是非常了得啊,就在dnnportal.cn,还可以把你的开发成果那到那里出售。

#7楼    回复  引用    

2006-10-20 22:36 by dnnfamily [未注册用户]
dnnfamily的QQ群:31760955
DNN空间每月只要120元
详情请见:http://www.dnnhost.cn/

#8楼    回复  引用    

2007-04-17 19:36 by bluesky [未注册用户]
期待8的出来啊
怎么好像好久都没更新了啊

#9楼    回复  引用    

2007-08-14 09:38 by 同声翻译公司 [未注册用户]
谢谢!这篇文章对我们有很大的帮助

#10楼    回复  引用    

2007-08-25 03:28 by Marky [未注册用户]
yeh site bhi rehti thi abhi
http://www.insidethesports.com
http://www.awxus.com
http://www.aerobic-shoes.net
http://www.axvus.com

#11楼    回复  引用    

2008-04-15 11:27 by 轻描淡写 [未注册用户]
高手怎么没继续下去了?
期待 渴盼中

#12楼    回复  引用  查看    

2008-06-16 21:56 by dnnme      
非常感谢楼主的贡献.


----------------------------------------------
DNN专业论坛:http://www.dnnme.cn

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-25 15:36 编辑过


相关链接: