现在的位置: 首页 > 综合 > 正文

TrueLove 项目感悟(一)功能分析、数据库设计

2013年03月11日 ⁄ 综合 ⁄ 共 2779字 ⁄ 字号 评论关闭

昨天和老婆在网上聊天,她看了我的博客,问我最近为什么不写技术文章了。我相信也是的,已经有2个星期没有写过技术类的文章。虽然最近忙着做 TrueLove 这个酒店查询的网站,但是在做 TrueLove 项目的时候一些经验、技巧、感悟和问题也应该记录下来,以便以后查阅和与他人分享。所以准备写 TrueLove 项目感悟的系列文章。

我是第一次用 Asp.net 2.0 做网站,所以很多地方都是摸索着来做。在项目感悟里面写的东西虽然都是自己应用的技术和方法,但是不保证他是最好的或者是正确的。很多自己的观点在里面,希望大家多指正以下。我下面先来帖以下这个项目要实现的功能,以便让大家对这个项目有所了解。

1.1、酒店要能显示名称,级别(星级),地点(细化到城市),简介(详细的介绍),图片,联系方式(电话,传真,邮箱,网址)

1.2、酒店的热率(用户查看的次数),根据热率排行(热率相等按照id大到小排列)

1.3、酒店的详细信息中的房间的分类(总统套房,标间…)价格

1.4、酒店的图片(详细的图片,多张)

1.5、首页显示最热酒店

1.6、首页显示最新酒店

1.7、首页显示网站的统计(酒店个数,三星四星五星等分别个数)

1.8、根据级别,名称,地点和价格查询

1.9、根据地点,级别等列表浏览

1.10、根据热度自动生成辅助搜索最优化(类似百度最热关键字)

以上是这个项目的功能要求。对这个项目我打算用下面的技术架构来实现:采用三层架构(DAL,BLL,Web),对于数据访问层,包括数据库的设计我准备用 NBear 来做,很喜欢他的简单高效,并且 Teddy 就是园子里的,得到个技术支持啥的也比较方便。BLL 那里用了以下 IoC ,当然还是用的 NBear 的 IoC 框架了,比较方便。Web 里面准备使用一部分的 Asp.net Ajax 来增加一些用户体验。基本的实现打算就是这样,还有很多没有考虑到的地方,还是边做边改吧,毕竟等什么都准备好再开始就永远都开始不了了。

仿照 NBear 的 Starter Kit  先把大架搭建起来,下面是整个项目的命名和说明:

2.1、命名空间TrueLove

2.2、数据库设计:EntityDesigns

2.3、实体类:Entities

2.4、网站:website

2.5、IoC:ServiceInterfaces ServiceImpls

2.6、数据库命名:TrueLove(数据库表前缀缩写tl_(True Love))

命名规范定了以后,下面要开始设计数据库了。打开EntityDesigns工程,添加一个 NBear.Common.Design.dll 引用。然后开始根据 NBear 的规范设计数据库实体类。具体方法这里不嗷诉了,可以参考Teddy 的 ORM 设计的文章。下面给出我设计的数据库实体类图,大家看看这样设计是否合理:

还有要用到的列表的类图:

大家看看,这样是不是合理,有没有什么建议。谢谢啊。下面要配置 NBear 的 VS 插件了,以方便自动生成数据库,Entities 类和实体类配置文件。首先要安装 NBear 的 VS 插件,很简单,双击 SetupNBearVsPlugin.exe 就搞定了。这里主要的是写那个插件的配置文件。在 EntityDesigns 工程下面建立一个 EntityDesignToEntityConfig.xml 的文件,然后在里面输入下面的内容:

<?xml version="1.0" encoding="utf-8" ?>
<EntityDesignToEntityConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CompileMode>Release</CompileMode>
<InputDllName>TrueLove.EntityDesigns.dll</InputDllName>
<OutputNamespace>TrueLove.Entities</OutputNamespace>
<EntityCodePath>..\TrueLove.Entities\DbEntities.cs</EntityCodePath>
<EntityConfigPath>..\Website\Configs\EntityImpls.xml</EntityConfigPath>
<SqlSync enable="true">
<SqlServerFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</SqlServerFolder>
<ServerName>.\sqlexpress</ServerName>
<UserID>sa</UserID>
<Password>pwd</Password>
<DatabaseName>TrueLove</DatabaseName>
</SqlSync>
</EntityDesignToEntityConfiguration> 

虽然大部分的配置字节从字面意思上都可以明白,但是这里有几点需要注意和说明的:

1.<CompileMode>Release</CompileMode> 咱们默认的类库便宜模式为 Debug ,也就是说生成的类库 DLL 是在 bin\Debug  目录下面,而这里这配置成 Release 的话就找不到。我在这里就犯了一个莫名的错误,当心细心的朋友不用提醒也会修改的。

2.<SqlSync enable="true"> 这个关系到是否同步到数据库,只有设置成 True 他才可以自动同步到数据库。

3.<SqlServerFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</SqlServerFolder> 这个里面的路径问题,如果使用的是sql server 2005 或者 express 则这里的90地方不用修改,若是使用 sql server 2000 的话要把90修改成80.

以上的这些说明和注意都是弱弱的,不过我在做的时候他确实让我头疼的一会,厚着脸皮写出来,让和我一样粗心的朋友可以避免遭受我一样的郁闷。

配置好了 VS 的插件了,现在要做同步了,建立你 <EntityCodePath> <EntityConfigPath> 路径给出的文件,然后编译 EntityDesigns 工程,数据库、实体类、实体类配置文件一切都搞定了,也就可以说整个数据访问层已经搞定了。NBear 就是这么高效,很有前途的框架啊。

凌晨 1:30 了,有点累了。明天接着写吧。明天主要讲讲用基于 Form 的安全机制来搭建用户模块。

很高兴,今天进入了博客园的前500名。听首歌,给老婆打磨戒指去...

抱歉!评论已关闭.