数据库表关系模型解析5——一对多数据模型中的一张表是自连接
2011-09-14 09:24
483 查看
此处详细记录了现实项目中一对多数据模型中的一张表是自连接表的列表页面和增删改查页面。
狼奔代码生成器可以自动生成ASP.NET页面及后台代码。
生成的项目用到的技术有:Jquery+MVC+Entity Framework。
实践开发过程中,我们使用PowerDesigner设计数据库模型。狼奔代码生成器就是读取PowerDesigner设计的数据库模型,分析其中的表与表之间的关系模型,分析其中的表和字段的说明信息中的关键字,自动生成不同的页面。
自连接数据模型
一对一数据模型
一对多数据模型
一对多数据模型中的一张表是自连接
多对多数据模型
多对多数据模型中的一张表是自连接
状态
上传
工作流
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/f26b9cfbb9bfb07155d941942a5d7a41.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/a8b3f882343a00648539ebd31cec185f.png)
图表 1项目组件说明图
App——页面展示层
采用MVC框架,使用Jquery脚本库,控件选用Easyui。
WcfHost——服务宿主(后期扩展)
为对外的服务提供宿主,使用WCF技术,HTTPS通讯协议。
IBLL——业务接口层
业务逻辑层的方法对外暴露的接口和服务契约。
BLL——业务逻辑层
业务逻辑的操作,包括业务处理,事务,日志。
DAL——数据访问层
数据库访问的操作,数据实体,业务实体,数据校验,使用Entity Framework。
Common——公共组件层
整个应用程序使用的公共辅助方法。
WFActivitys——工作流活动层(后期扩展)
定义了工作流需要的活动,使用微软WF技术。
WFDesigner——工作流设计器(后期扩展)
可以让实施人员自由配置工作流的设计器,使用微软WPF技术。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/ee6b9460abefc37f53d9b678f6c351b6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/be7b3be59f6788dee1378983f2da197d.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/0abf93fb7ec82aad35263ae887527502.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/cd1ae4c473dd61da5bc950ded0316f3d.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/30fd0d38e753b5164b2c43a978c32d2a.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/c5c06f0e1cc4e4a1835f118cce794dd9.png)
整个项目应该遵循的原则是:胖BLL,瘦mvc
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/8f1057b6fb21f64b741b936727d0b701.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/3b33e53290410b0bf3492c23f7d0ec19.png)
业务实体在ChanPin.cs文件中的ChanPin类,它是一个分部 partial 类,内部可以自定义属性,MetadataType属性中指定了该实体属性的校验类ChanPinMetadata,并且它继承了IBaseEntity接口(此接口暂时没有任何成员);
ChanPin.cs文件中还有一个ChanPinMetadata类用于校验ChanPin类中的成员。注意校验类需要引用using System.ComponentModel.DataAnnotations;命名空间。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/e33554700166dbfe584d979518afd19b.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/9f35d6e4898670a2e912d1374515626c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/0672798ad367947ba7bbf821615cc083.png)
狼奔代码生成器可以自动生成ASP.NET页面及后台代码。
生成的项目用到的技术有:Jquery+MVC+Entity Framework。
实践开发过程中,我们使用PowerDesigner设计数据库模型。狼奔代码生成器就是读取PowerDesigner设计的数据库模型,分析其中的表与表之间的关系模型,分析其中的表和字段的说明信息中的关键字,自动生成不同的页面。
表与表之间的关系模型包括
单表数据模型自连接数据模型
一对一数据模型
一对多数据模型
一对多数据模型中的一张表是自连接
多对多数据模型
多对多数据模型中的一张表是自连接
关键字包括
查询状态
上传
工作流
架构图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/f26b9cfbb9bfb07155d941942a5d7a41.png)
组件说明
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/a8b3f882343a00648539ebd31cec185f.png)
图表 1项目组件说明图
App——页面展示层
采用MVC框架,使用Jquery脚本库,控件选用Easyui。
WcfHost——服务宿主(后期扩展)
为对外的服务提供宿主,使用WCF技术,HTTPS通讯协议。
IBLL——业务接口层
业务逻辑层的方法对外暴露的接口和服务契约。
BLL——业务逻辑层
业务逻辑的操作,包括业务处理,事务,日志。
DAL——数据访问层
数据库访问的操作,数据实体,业务实体,数据校验,使用Entity Framework。
Common——公共组件层
整个应用程序使用的公共辅助方法。
WFActivitys——工作流活动层(后期扩展)
定义了工作流需要的活动,使用微软WF技术。
WFDesigner——工作流设计器(后期扩展)
可以让实施人员自由配置工作流的设计器,使用微软WPF技术。
产品的作用
下面我们以产品为例子分析一对多数据模型中的一张表是自连接,代码已在生成的文件中,并且注释详备,此文不再赘述数据模型
产品表包含一个产品目录的外键![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/ee6b9460abefc37f53d9b678f6c351b6.png)
查询
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/be7b3be59f6788dee1378983f2da197d.png)
列表
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/0abf93fb7ec82aad35263ae887527502.png)
页面展示层App
Mvc中的View的代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/cd1ae4c473dd61da5bc950ded0316f3d.png)
Mvc中的Controller的代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/30fd0d38e753b5164b2c43a978c32d2a.png)
Mvc中的Model的代码
在Entity Framework中的实体类业务接口层IBLL
此层作为业务逻辑层方法的接口,也是WCF对外暴露的契约![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/c5c06f0e1cc4e4a1835f118cce794dd9.png)
业务逻辑层BLL
数据字典类的业务逻辑写在BLL类库中,事务使用TransactionScope对象,ChanPinBLL.cs类文件里面封装了业务逻辑的操作方法,并且继承了BaseBLL基类整个项目应该遵循的原则是:胖BLL,瘦mvc
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/8f1057b6fb21f64b741b936727d0b701.png)
数据访问层DAL
其中ChanPin.cs文件放置的是数据字典表的实体和实体元数据的验证,而ChanPinRepository.cs文件放置的是对数据字典访问数据库的方法![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/3b33e53290410b0bf3492c23f7d0ec19.png)
业务实体在ChanPin.cs文件中的ChanPin类,它是一个分部 partial 类,内部可以自定义属性,MetadataType属性中指定了该实体属性的校验类ChanPinMetadata,并且它继承了IBaseEntity接口(此接口暂时没有任何成员);
ChanPin.cs文件中还有一个ChanPinMetadata类用于校验ChanPin类中的成员。注意校验类需要引用using System.ComponentModel.DataAnnotations;命名空间。
服务层
(后期扩展)删除
先选中一条,然后点击删除![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/e33554700166dbfe584d979518afd19b.png)
创建
单选则弹出树形列表框,而多选则弹出树型框![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/9f35d6e4898670a2e912d1374515626c.png)
修改
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/0672798ad367947ba7bbf821615cc083.png)
查看详细信息
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/07/92d4f306f0073db2357c8266dde20253.png)
相关文章推荐
- 数据库表关系模型解析7——多对多数据模型中的一张表是自连接
- 数据库表关系模型解析6——多对多数据模型
- Cassandra 数据模型与关系数据库模型比较
- 关系数据库原理、数据模型
- 微服务-动态表单数据库设计模型(关系数据库和非关系数据模型MongoDB)
- Nosql 理解篇+实战篇 三 数据模型Ⅱ 聚合数据库关系处理及图数据库
- 关系模型、键值存储、文档存储、列式存储、图形数据库,解析五大流行的数据库模型
- EF5+MVC4系列(1) Podwerdesigner15.1设计数据库;PD中间表和EF实体模型设计器生成中间表的区别;EF5.0 表关系插入数据(一对多,多对多)
- Entityframework~Fluent Api配置数据模型与数据库结构关系
- 数据库 - 关系数据模型
- 初学数据库——数据模型之关系数据模型
- 黑马程序员java自学总结之--数据关系模型和对象模型
- 数据库系统概念(机械工业出版社,第六版)复习——第二章:关系模型简介
- 使用EF Model First创建edmx模型,数据库有数据的情况下,如何同时更新模型和数据库
- SQLserver学习day03 数据表基本概念和操作的学习与管理 数据库关系图
- PowerDesigner导出数据库为PDM物理数据模型文件,然后导出html或者rtf格式文件
- 大数据Spark “蘑菇云”行动第57课: Spark 2.0.1稳定版本解析及广告点击案例数据库和动态黑名单过滤代码
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
- Swing编程中用于显示数据库查询结果的数据模型
- [转]同步SharePoint List数据到关系数据库