项目实战

项目实践

摘要:我要实现的是一个医学考试的网站程序,以至到现在想达到一个社区的效果,SNS.项目编码中又更换了一次数据库,因为总觉得mssql不能好狠的满足我的需要,对服务器mssql连接和更新都不方便,最后我选择的是Mysql,幸好我只是重写了DAO,和部分BL成的代码,那么我们就从头来说一说这个程序编写的流程,包括一些细节,我尽可能的全面概述,当然到目前为止,我还是有很多内容没有解决,我们共同学习.

数据库设计:

和同类项目相同,我并没有先进行实体类的设计,我觉得2者方法大同小异,有人喜欢用建模工具等等,而我是先在纸上画出来大概的需求,然后就开始设计数据库.

对于mssql和Mysql都已经有了可视化的操作界面,就不用再编写sql语句了.

这是Mysql的Navicat8 

主键使用自动增长,更有规律一些,

每个表之间有主外键来约束,

之后我发现每个表与user的关联是最多的,而且越来越多,那么这也就是我为什么设计至sns方向的原因之一.

Mysql和mssql的sql语法有一些不同,如初始化的时间,选取前多少条记录等等,分页limit.

对于字段,尽量使用相同的类型的.int,varchar,datetime等等.

其中Navicat8 给我们提供了非常好的操作体验,包括增加用户,数据导出,数据结构同步,数据同步..

数据库里的字段,类型随着开发的深入,并不是一成不变的,也存在增加字段,删除不用的字段,修改字段的名称或类型,这下数据库层不是很难写了码?

借助ORM来祝你一臂之力,我以前是通过NBear Nhibernate,等实现DAO层的,但却发现这样的工具是功能可以实现,性能蹦不是令人满意,在多表联合查询,的时候是不能和ADO相比的,(有时候我竟然用到了4表联合查询)

那么我还是觉得这样一个有发展的网站不能太依赖别人的框架,虽然是开源的,也有一些文档,但并不是所有的代码我都能读懂,更可怕的应该是出错时就不知道如何处理了,那么简单最有效的当然是使用SQL和ADO来操作数据库了,又回到了起点,怎么处理字段的变更呢?

我想你推荐一个工具,叫codeSmith,这是个代码生成工具,我相信项目之间或之内总是有很多相同的东西,比如我们经常使用的CRUD操作.市面上也有很多代码生成工具,而这款工具是可以自定义模板,支持多种数据库,并且能方便的输出到文件,还可以生成VS的工程文件(这个我没有深入研究,能生成文件就可以达到我的要求了)

那么问题解决了 ,表名字段变更了,我只要用codeSmith点一下生成按钮,所有的DAO和Model类库都更新了,多么的惬意.

当然你如果对codeSmith不太了解,我告诉你,这个工具很简单,你用半天的时候就能完全掌握他,因为文档丰富,并且学习他,会令你事半功倍.

以后会把我的模板分享给大家

我的DAO也许你一看就懂了,包括Insert,save ,getone,getlist(),getlist(pageno,pagesize)等等,基本的操作.

下一步就是如何用这个DAO来开发网站了.

美工与程序总是不能兼容

有一定开发经验的朋友,都会试着学习通过模板技术来实现程序与美工彻底的分离,或者达到更换皮肤的效果.

包括codebehind,MVC,templateString等.我

怎么来解决这一问题呢?

我是通过usercontrol来实现的,通常我们都是用拖拽的方式来加载使用预先定义好的usercontrol,那么我这一次不是这样了,是用后台代码来控制加载你需要的usercontrol.

在根目录中我定义了一个文件并且基本是个空的文件.

后台的cs来控制usercontrol的加载.

举例说明:我在url地址栏上输入http://loacalhost/index.aspx?action=index

那么我加载的是/template/Default/index/index.ascx,这个过程是通过pagebase来实现的.

那么我是如何更换主题呢?把default换掉,对应的,目录和文件与default也要相同.但头部的标识要和default的相关联.

原文地址:https://www.cnblogs.com/zq535228/p/1272532.html