数据库表关系模型解析6——多对多数据模型

时间:2024-03-12 13:22:23

此处详细记录了现实项目中多对多数据模型列表页面和增删改查页面。
狼奔代码生成器可以自动生成ASP.NET页面及后台代码。
生成的项目用到的技术有:Jquery+MVC+Entity Framework。

实践开发过程中,我们使用PowerDesigner设计数据库模型。狼奔代码生成器就是读取PowerDesigner设计的数据库模型,分析其中的表与表之间的关系模型,分析其中的表和字段的说明信息中的关键字,自动生成不同的页面。

表与表之间的关系模型包括

  1. 单表数据模型
  2. 自连接数据模型
  3. 一对一数据模型
  4. 一对多数据模型
  5. 一对多数据模型中的一张表是自连接
  6. 多对多数据模型
  7. 多对多数据模型中的一张表是自连接

关键字包括

  1. 查询
  2. 状态
  3. 上传
  4. 工作流

 

架构图

组件说明

图表 1项目组件说明图

  1. App——页面展示层

    采用MVC框架,使用Jquery脚本库,控件选用Easyui。

  2. WcfHost——服务宿主(后期扩展)

    为对外的服务提供宿主,使用WCF技术,HTTPS通讯协议。

  3. IBLL——业务接口层

    业务逻辑层的方法对外暴露的接口和服务契约。

  4. BLL——业务逻辑层

    业务逻辑的操作,包括业务处理,事务,日志。

  5. DAL——数据访问层

    数据库访问的操作,数据实体,业务实体,数据校验,使用Entity Framework。

  6. Common——公共组件层

    整个应用程序使用的公共辅助方法。

  7. WFActivitys——工作流活动层(后期扩展)

    定义了工作流需要的活动,使用微软WF技术。

  8. WFDesigner——工作流设计器(后期扩展)

    可以让实施人员*配置工作流的设计器,使用微软WPF技术。

     

采购计划明细和分发的作用

业务需求:将采购计划明细中的物资分发到不同的站点

采购计划明细和分发之间有一张关联表,这三张表就构成了一个典型的"多对多数据模型"

下面我们以分发为例子分析"多对多数据模型"数据模型,代码已在生成的文件中,并且注释详备,此文不再赘述

数据模型

采购计划明细和分发之间是多对多的关系

查询

设计表的时候,在"分发数量"字段的注释处写上"查询",另外"分发数量"字段是int类型,所以呈现两个输入框,输入范围

 

列表

页面展示层App

Mvc中的View的代码

Mvc中的Controller的代码

 

Mvc中的Model的代码

Model就是Entity Framework自动生成的实体

业务接口层IBLL

此层作为业务逻辑层方法的接口,也是WCF对外暴露的契约

业务逻辑层BLL

数据字典类的业务逻辑写在BLL类库中,事务使用TransactionScope对象,FenFaBLL.cs类文件里面封装了业务逻辑的操作方法,并且继承了BaseBLL基类

整个项目应该遵循的原则是:胖BLL,瘦mvc

数据访问层DAL

其中FenFa.cs文件放置的是表的实体和实体元数据的验证,而FenFaRepository.cs文件放置的是访问数据库的方法

业务实体在FenFa.cs文件中的FenFa类,它是一个分部 partial 类,内部可以自定义属性,MetadataType属性中指定了该实体属性的校验类FenFaMetadata,并且它继承了IBaseEntity接口(此接口暂时没有任何成员);

FenFa.cs文件中还有一个FenFaMetadata类用于校验FenFa类中的成员。注意校验类需要引用using System.ComponentModel.DataAnnotations;命名空间。

服务层

(后期扩展)

删除

先选中一条,然后点击删除

创建

选择分发

修改

查看详细信息