数据库表关系模型解析5——一对多数据模型中的一张表是自连接
此处详细记录了现实项目中一对多数据模型中的一张表是自连接表的列表页面和增删改查页面。
狼奔代码生成器可以自动生成ASP.NET页面及后台代码。
生成的项目用到的技术有:Jquery+MVC+Entity Framework。
实践开发过程中,我们使用PowerDesigner设计数据库模型。狼奔代码生成器就是读取PowerDesigner设计的数据库模型,分析其中的表与表之间的关系模型,分析其中的表和字段的说明信息中的关键字,自动生成不同的页面。
表与表之间的关系模型包括
-
单表数据模型
-
自连接数据模型
-
一对一数据模型
-
一对多数据模型
-
一对多数据模型中的一张表是自连接
-
多对多数据模型
-
多对多数据模型中的一张表是自连接
关键字包括
-
查询
-
状态
-
上传
-
工作流
架构图
组件说明
图表 1项目组件说明图
-
App——页面展示层
采用MVC框架,使用Jquery脚本库,控件选用Easyui。
-
WcfHost——服务宿主(后期扩展)
为对外的服务提供宿主,使用WCF技术,HTTPS通讯协议。
-
IBLL——业务接口层
业务逻辑层的方法对外暴露的接口和服务契约。
-
BLL——业务逻辑层
业务逻辑的操作,包括业务处理,事务,日志。
-
DAL——数据访问层
数据库访问的操作,数据实体,业务实体,数据校验,使用Entity Framework。
-
Common——公共组件层
整个应用程序使用的公共辅助方法。
-
WFActivitys——工作流活动层(后期扩展)
定义了工作流需要的活动,使用微软WF技术。
-
WFDesigner——工作流设计器(后期扩展)
可以让实施人员自由配置工作流的设计器,使用微软WPF技术。
产品的作用
下面我们以产品为例子分析一对多数据模型中的一张表是自连接,代码已在生成的文件中,并且注释详备,此文不再赘述
数据模型
产品表包含一个产品目录的外键
查询
列表
页面展示层App
Mvc中的View的代码
Mvc中的Controller的代码
Mvc中的Model的代码
在Entity Framework中的实体类
业务接口层IBLL
此层作为业务逻辑层方法的接口,也是WCF对外暴露的契约
业务逻辑层BLL
数据字典类的业务逻辑写在BLL类库中,事务使用TransactionScope对象,ChanPinBLL.cs类文件里面封装了业务逻辑的操作方法,并且继承了BaseBLL基类
整个项目应该遵循的原则是:胖BLL,瘦mvc
数据访问层DAL
其中ChanPin.cs文件放置的是数据字典表的实体和实体元数据的验证,而ChanPinRepository.cs文件放置的是对数据字典访问数据库的方法
业务实体在ChanPin.cs文件中的ChanPin类,它是一个分部 partial 类,内部可以自定义属性,MetadataType属性中指定了该实体属性的校验类ChanPinMetadata,并且它继承了IBaseEntity接口(此接口暂时没有任何成员);
ChanPin.cs文件中还有一个ChanPinMetadata类用于校验ChanPin类中的成员。注意校验类需要引用using System.ComponentModel.DataAnnotations;命名空间。
服务层
(后期扩展)
删除
先选中一条,然后点击删除
创建
单选则弹出树形列表框,而多选则弹出树型框
修改
查看详细信息