代码生成器 CodeGenerator - 生成ORM
C/S结构快速开发框架/软件快速开发平台
CodeGeneratorV5.1 代码生成器
原创软件@csframework.com
1 生成ORM
1.1 什么是ORM
ORM-对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R Mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM相当于中继数据,具体到产品上,例如ADO.NET Entity Framework。DLINQ中实体类的属性(Table)就算是一种中继数据。
1.2 生成ORM类的源码
点击 功能菜单。
选择数据库。
点【取用户表和视图】按钮。
主表
用于区别当前选择的表是主表还是明细表,业务单据的主表或数据字典均可勾选为主表。注意:业务单据的明细表不能勾选!
并发控制
勾选此选项,指当前ORM模型具有并发控制功能,在Model类生成并发操作特性:
[ORM_ConcurrentAttribute("TS")],TS为字段名,当前表必须存在TS字段。
参考:tb_Customer模型生成的并发控制特性类(ORM_ConcurrentAttribute):
l ORM_TableAttribute,表的特性,定义表名和主键。
l ORM_ConcurrentAttribute,支持并发操作的特性类,TS为字段名。
类名
生成的ORM类名,如:,可以修改,系统自动添加前缀tb_。
点【取表结构】按钮,系统自动获取表结构信息。
主键:当前数据表的主键。
注释: 类的注释。
命名空间:当前ORM所在的命名空间。
1.3 表格栏位说明
栏位标题 | 说明 | ORM_FieldAttribute属性 |
列名 | 对应字段名。 | - |
类型 | 数据类型,对应 C# SqlDbType枚举数据类型。 | Type |
长度 | 数据长度定义。 | Size |
查询/只读列 | 参考字段不支持数据更新,不生成SQL相关脚本。 | IsLookup |
新增/修改列 | 是否新增修改列,系统仅生成勾选此字段的SQL脚本。 | IsAddOrUpdate |
主键列 | 资料表主键,每张表必须定义一个主键或数据更新主键。 | IsPrimaryKey |
外键列 | 明细表必须勾选,主表不能勾选。 明细表必须定义一个外键列。 | IsForeignKey |
流水号 | 单据号码(如:XX0001),若此字段为自动生成流水号,必须勾选。 | IsDocFieldName |
1.4 ORM生成的类型
【输出目录】将生成的源码文件保存到此目录,文件名为类名,如:tb_dt_Doc.cs。
【生成表结构静态类】,将表结构转换为静态类,每个字段对应一个变量,无属性和方法。
此类型的ORM, 在数据层的CreateSqlGenerator方法必须创建对应
GenerateSqlCmdByTableFields对象。
【生成实体类(对象)】,将表结构转换为实体类,字段名称对应属性名称,可实例化为具
体对象。此类型的ORM, 在数据层的CreateSqlGenerator方法必须创建对应
GenerateSqlCmdByObjectClass对象。
【生成标准实体类】,将表结构转换为标准实体类,字段名称对应属性名称,可实例化为
具体对象。标准实体类不包含字段名称常量定义。
1.5 ORM特性类说明
ORM_TableAttribute特性定义
定义表的特性,定义表名和主键。
ORM_FieldAttribute 特性定义
构造器参数对应在表格中勾选的设置,值为:True/False。
注:后台数据更新根据每个字段的ORM_FieldAttribute特性自动生成SQL脚本。
ORM_ConcurrentAttribute 特性定义
支持并发操作的特性,TS为字段名,字段类型:时间戳(timestamp)。
1.6 命令生成器 IGenerateSqlCommand
ORM及后台数据更新是开发框架核心功能之一,为了扩展其它类型的ORM,开发框架设计了IGenerateSqlCommand 接口,并实现了两个类,可以跟据不同的ORM模型自动生动SQLCommand,以下两个派生类:
GenerateSqlCmdByTableFields :由表结构静态类自动生成SqlCommand。
GenerateSqlCmdByObjectClass:由实体类自动生成SqlCommand。
IGenerateSqlCommand接口提供扩展性,支持您自己开发ORM模型,如XML Mapping (类似Nhibernate架构中的XML定义) 。