最近我正在用NHibernate和asp.net开发一个网上书店,算是实验。 用面向对象的方法(UML进行分析建模),用的是powerdesigner 12.5,建了一些用例图,活动图,和一个大的类图,然后生成了物理数据模型图,进而针对sql server 2005生成数据脚本(我用的是Express 版 + sql servermanagement studio express)。
powerdesigner 针对NHibernate有支持,可以自动根据类图生成代码(CS code),映射文件(O/Rmapping)和数据访问层(DAL)。 生成的结构和效果相当棒。 我对映射文件进行了简单的修改由于PD(powerdesigner)支持的是NH 1.0 所以有些懂西要改,并且由于对象之间的关联比较复杂比如牵涉到继承的时候,生成的mapping 多少有些不足,一些 One to Many ,many tomany关联生成的不是很好,但One to One 和 one to many 生成的很好。
现在Domain model ,映射文件,数据库,数据访问层都有了,就缺具体的应用了,我是用visual web developer 2008 express edtion 建立的solution。
这几天我对生成的文件进行了修改,加了业务逻辑层 (BookStoreBLL 工程)并进行了简单的测试: 用datagridView + objectDataSource + 业务层代码, 效果不错,可以实现查询,和修改,但删除没有实现。
我已将整个数据库和源代码都上传到我的博客园空间上了,下载地址:http://files.cnblogs.com/ubestim/BookStoreWebSolution-new.zip欢迎大家下载,我们可以共同学习这些技术,共同探讨如何使用,如何构造一个比较棒的项目。
出于文件大小的限制,我将debug中不太重要的dll删除了,在运行程序前,请先阅读下载文件中的的配置说明。项目的大致结构:

一个solution , 包含有8个工程文件。它们的依赖关系是这样的:

- DommainModel 包含 Domain model和映射文件
ModelIDAL 和 ModelNHibernateDAL 引用 DomainModel (所以Domain Model 不能引用数据访问层了 不然会造成循环引用)
IDAL 是数据层的接口
DALFactory 从字面上理解是 构造共厂,其作用就是 构造DomainModel 和DAL
IBLL 是我模仿IDAL加的业务逻辑层的接口,没什么东西,只是一个 BusinessException 把它独立出来 是为了 让 业务逻辑层 和 DomainModel 都可以引用它
- BookStoreBLL 是业务逻辑层, 引用数据层(DAL),域对象(DomainModel)和业务层接口(IBLL)其结构我进行了有点创新的构造,可以提取通用操作,而不用在每个业务类里写代码,并且每个业务类可以动态的对自己负责的实体进行业务规则验证。
- WebSolution 是网站, 引用BLL 和 DomainModel。网站下面 Admin 文件夹下准备存放后台管理页面 ,现在有一个Manage.aspx 我放了几个Ajax toolkit中的控件,玩了玩,呵呵。
Default.aspx 是对现在的底层代码的测试,用了一个datagridView和objectDataSource 测试的是CategoryBLL中的业务方法。
由于习惯,代码注释是英文的,后续上传的时候会改成中文。
重要补充:需要对user表中的测试数据进行修改,update [user] set userRole='cust'
update[user] set userRole='admin' where userid<2 (cust->customer;admin->administrator)因为userRole这一列用作识别子类的discriminator,参看user类的映射文件。
现在进度:现在团队已经有4个人进行开发。需要做的工作是尽快完成业务层,并且显示层(测试)能和业务层的并行进行(写好就测试)。
等全部完成之后,要对数据层进行重构(考虑用泛型),以使其符合标准,并优化之。业务层也会进行适当的重构,以应用更好的模型。
我们还要考虑怎么将MVC整进来,这是后话了。
希望感兴趣的朋友,多多支持,能多多讨论。
有意参与开发的朋友请给我发邮件(ubestim@gmail.com)
原文地址:http://www.cnblogs.com/ubestim/archive/2008/11/26/1341743.html