二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在利用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能够找到该模块中的数据并实现文章聚合功能。