星空体育app2026世界杯官方下载 飞驰bp框架-ORM盘算推算本领论述

发布日期:2026-06-20 21:38    点击次数:109

星空体育app2026世界杯官方下载 飞驰bp框架-ORM盘算推算本领论述

飞驰 bp框架ORM 盘算推算 — 本领论述

文档版块:2026-06

章节编号:1.1

依据代码:CCFlow/Components/BP.En30(中枢 ORM 组件)

诠释:本文基于源码静态分析撰写,用于本领共享与决策论证,发愤准确姿色盘算推算想想并客不雅分析优劣。

一、缘由与盘算推揣度较

1.1 肇始于 2002 年

飞驰 ORM 盘算推算肇始于 2002 年,缘由是探索可复用的企业支配框架本领。那时需要一套约略:

斡旋姿色「数据表 ↔ 实体类」的映射关系;

在多种数据库(SQL Server、Oracle、MySQL 等)上复用归并套业务代码;

复古快速搭建照管类支配(增批改查、列表查询、主从表裁剪)。

EntityDBAccess.cs文献头防护仍保留着创建时辰标志:

/*简介:崇拜存取数据的类创建时辰:2002-10临了修改时辰:2002-10*/

1.2 盘算推揣度较(与市面 ORM 的各别点)

飞驰 ORM 从一驱动就不是「纯数据走访层」,而是面向企业低代码支配的元数据框架:

维度

飞驰 ORM 计较

典型 ORM(EF Core / Hibernate)计较

中枢对象

表 + 字段 + 控件 + 关系

类 + 属性 + 导航属性

元数据载体

Map/Attr/Attrs(代码 + 库表双轨)

特色标注 / Fluent API / 商定

产出物

尊龙凯时中国官网入口

CRUD + 表单 UI + 查询面板 + 主从/多对多

CRUD + LINQ 查询

运行口头

属性值存于 Row(Hashtable),弱类型读写

强类型属性 + 变更追踪

这一取向决定了后续 CCFlow、JFlow、低代码表单、组织结构等模块均可在归并套元数据上叠加才调,而无用重叠界说字段语义。

二、演进历程:XML → Map / Attr / Attrs

2.1 第一阶段:XML 姿色映射(约 2002)

早期版块用 XML 文献抒发数据表与实体类的完好意思关系。Map.GenerMap(string xml)范例于今仍保留这一才调:读取 XML 中的Base、Attr、SearchAttr、Dtl、Dot2Dot等节点,动态构建Map对象。

#region 生成属性凭证xml. private string PKs = ""; public void GenerMap(string xml) { DataSet ds = new DataSet(""); ds.ReadXml(xml); foreach (DataTable dt in ds.Tables) { switch (dt.TableName) { case "Base": this.DealDT_Base(dt); break; case "Attr": this.DealDT_Attr(dt); break; case "SearchAttr": this.DealDT_SearchAttr(dt); break; case "Dtl": this.DealDT_SearchAttr(dt); break; case "Dot2Dot": this.DealDT_Dot2Dot(dt); break; default: throw new Exception("XML 竖立信息极度,莫得商定的标志:" + dt.TableName); } } // 查验竖立的完好意思性。 }

XML 决策的优点是映射与代码解耦、便于器用生成;瑕玷是调试困难、版块照管资本高、贫乏编译期查验。

2.2 第二阶段:Map / Attr / Attrs 类(约 2003)

2003 年,架构校正为以Map、Attr、Attrs三个中枢类在 C# 代码中姿色映射,成为于今沿用的主旅途。

责任

Map

姿色一个实体(En)的完好意思元数据:物理表名、主键政策、字段蚁集、从表、多对多、查询条目、关连范例等

Attr

姿色单个字段/属性:键名、物理列名、数据类型、字段逻辑类型、UI 控件、可见性、默许值、外键绑定等

AttrsAttr的蚁集,提供AddTBString、AddTBInt、AddDDLEntities、AddDDLSysEnum等工场范例,简化Map构建

实体子类通过重写 EnMap属性复返我方的Map界说。以组织结构中的Emp(用户)为例:

public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("Port_Emp", "用户"); #region 基本属性 map.EnDBUrl = new DBUrl(DBUrlType.AppCenterDSN); map.IndexField = EmpAttr.FK_Dept; #endregion #region 字段 map.AddTBStringPK(EmpAttr.No, null, "编号", true, false, 1, 50, 30); // ... map.AddTBString(EmpAttr.Name, null, "称号", true, false, 0, 200, 30); map.AddDDLEntities(EmpAttr.FK_Dept, null, "部门", new BP.Port.Depts, false); // ... #endregion 字段

代码化 Map带来了编译期类型安全(字段常量类如EmpAttr)、IDE 跳转、与业务逻辑同仓版块照管等上风,XML 旅途退居兼容与器用导入用途。

三、中枢架构

3.1 类头绪与责任

目次结构(BP.En30):

目次/文献

诠释

En/ 实体基类、 Map/Attr/Attrs、SqlBuilder、QueryObject、EntityDBAccess DA/ 数据库走访、 DBAccess、DataType、缓存 Sys/ 低代码表单位数据: MapAttr、MapData、MapDtl、SFTable、SFDBSrc Port/ 组织结构实体( Emp、Dept、Station等),均基于本 ORM 界说

3.2 数据承载:Row 弱类型模子

实体字段值不成功映射为 C# 自动属性,而是存放在 Row(接管Hashtable) 中,通过GetValByKey/SetValByKey读写:

public class Row : Hashtable { // ... public void LoadAttrs(Attrs attrs) { this.Clear; foreach (Attr attr in attrs) { switch (attr.MyDataType) { case DataType.AppInt: // ...

盘算推算意图:

低代码场景下字段可运行时增删,无需从头编译实体类;

主表、从表、过程表单共用归并套读写 API;

业务类仍可封装强类型属性(如 Emp.Name),里面转调GetValStringByKey。

3.3 捏久化活水线

组件

责任

SqlBuilder 凭证 Map/Attrs生成 SELECT/INSERT/UPDATE/DELETE,处理多主键、多数据库方言 SQLCache

缓存实体级 SQL 模板,减少重叠拼接

EntityDBAccess 实施 SQL、极端时触发 CheckPhysicsTable自动建表/扩列 QueryObject 链式构造 WHERE/ORDER BY,供 Entities批量查询

3.4 主键政策

通过实体基类商定主键字段名:

基类

主键

典型场景

EntityNoNameNo

(字符串)

部门、用户、扮装、过程编号

EntityOIDOID

(自增整型)

运行实例、从标明细

EntityMyPKMyPK

(组合字符串)

DeptEmp、DeptEmpStation等关连表

FieldType摆设进一步区别字段逻辑扮装:平凡、主键、外键、摆设、主键+外键、关连文本、凭空字段等。

四、高出字段映射:BP 膨胀才调

原始 ORM 仅处置「数据库列 ↔ 实体属性」映射;飞驰 BP 层在此基础上膨胀为支配元数据框架。

4.1 字段逻辑类型(FieldType / FieldTypeS)

public enum FieldTypeS { Normal = 0, // 平凡属性字段 Enum = 1, // 摆设字段 FK = 2 // 外键字段 } public enum FieldType { Normal, PK, FK, Enum, PKFK, PKEnum, RefText, NormalVirtual, MultiValues }

类型

含义

典型 API

属性字段

平凡列,文本框/数值/日历

AddTBString、AddTBInt、AddTBDate 摆设字段 绑定 Sys_Enum或字符串摆设AddDDLSysEnum 外键字段 绑定另一 Entities蚁集AddDDLEntities 外部数据源字段 绑定 SFTable(SQL/WS/Handler 等)UIBindKey→SFTable 关连文本 外键旁的冗余表示列(如 FK_Dept+FK_DeptT) 自动追加 key + "T"的Attr

Attr.ToMapAttr与MapAttr.HisAttr组成代码 Map ↔ 库表 MapAttr双向编削桥梁,使盘算推算态(盘算推算器保存到Sys_MapAttr)与运行态(GenerMap动态生成Map)保捏一致。

4.2 控件类型映射(UIContralType)

Attr不仅记载MyDataType(存储类型),还记载UIContralType(呈现控件):

基础: TB(文本框)、DDL(下拉)、CheckBok、RadioBtn

过程/公文: HandWriting(签名)、FrmImgAth(图片附件)、GovDocFile(正文)、JobSchedule(程度图)

挪动端: MapPin、MobilePhoto、Location

低代码表单盘算推算器将控件竖立写入 Sys_MapAttr,运行时MapDtl.GenerMap遍历MapAttrs调用map.AddAttr(mapAttr.HisAttr)合成完好意思Map,从而一份元数据同期驱动捏久化与 UI 渲染。

4.3 主表—从表映射(EnDtl)

Map.AddDtl声明主实体下的从表蚁集:

public void AddDtl(Entities ens, string refKey, string groupName = null, DtlEditerModel model = DtlEditerModel.DtlBatch, string icon = null) { EnDtl dtl = new EnDtl; dtl.Ens = ens; dtl.RefKey = refKey; dtl.GroupName = this.currGroupMethodName; dtl.DtlEditerModel = model; dtl.Icon = icon; this.Dtls.Add(dtl); }

refKey:从表中外键列(如FK_Node);

DtlEditerModel

:批量裁剪、查询裁剪、自界说 URL 等模式;

过程表单明细( MapDtl)、组织结构子面板均基于此机制。

4.4 一双多 / 多对多映射(AttrOfOneVSM)

Map.AttrsOfOneVSM姿色「一」端实体与「多」端实体通过中间表(MM 表)的关连,举例用户和顺所属部门:

map.AttrsOfOneVSM.AddBranches(new DeptEmps, new BP.Port.Depts, BP.Port.DeptEmpAttr.FK_Emp, BP.Port.DeptEmpAttr.FK_Dept, "部门和顺", EmpAttr.Name, EmpAttr.No, "@WebUser.DeptNo");

支捏树形部门、平铺面板等多种和顺 UI(Dot2DotModel),成功生成部门-东谈主员和顺界面,无需手写关连 CRUD。

4.5 外部数据源(SFTable / SFDBSrc)

SFTable

:界说下拉/列表的外部数据起原(本库 SQL、跨库、WebService、Java 处理器等);

SFDBSrc:多数据源贯穿竖立,StarSky Sports2026世界杯(中国)IOS/安卓官方下载使Map可指定DBSrc指向非腹地库;

字段通过 UIBindKey关连SFTable,完竣不建物理外键列也能绑定外部数据的下拉选项。

4.6 自动 DDL(CheckPhysicsTable)

实体在 Insert/Update失败时可触发CheckPhysicsTable:按Map.Attrs界说自动创建表或膨胀列长。这使低代码「先画表单、后建表」成为可能,亦然与「迁徙剧本驱动」的 ORM 的权贵各别。

4.7 查询与权限膨胀

Map还承载:

SearchNormals/SearchFKEnums:列表页查询条目;

HisRefMethods

:实体关连功能(修改密码、部门扮装和顺等);

UAC

:插入/删除/更新/查抄权限;

AddHidden:数据领域过滤(如 SAAS 模式OrgNo = @WebUser.OrgNo)。

五、生态承载:基于 ORM 构建的产物模块

飞驰 ORM 不是伶仃的数据层,而是 CCFlow / JFlow / 飞驰 BPM 低代码平台的斡旋元数据底座。

模块

与 ORM 的关系

飞驰 BPM / CCFlow 过程模板、节点、表单均用 Entity/Entities界说;运行期表单数据通过GEEntity(通用实体)+ 动态GenerMap读写 JFlow Java 版移植归并套 Map/Attr语义,保捏跨言语元数据一致 低代码 盘算推算器操作 Sys_MapData/Sys_MapAttr;运行时合成Map;主从表、外键、摆设、外部数据源均落在Attr膨胀属性上 组织结构Port_*五表实体均在BP.Port用EnMap声明;DeptEmp、DeptEmpStation用EntityMyPK;东谈主员界面用AttrsOfOneVSM和顺多部门 权限 / 报表 / 接口 斡旋 GetValByKey读写;QueryObject构造列表;ToJsonObject输出 API

论断:更换 ORM 意味慎重写元数据模子、表单盘算推算器、过程引擎数据层、组织结构集成接口——资本极高,因此该 ORM 是平台级基础范例而非可插拔组件。

六、与市面 ORM 的对比评估

6.1 对比总表

维度

飞驰 ORM(BP.En30)

Entity Framework Core

Hibernate / JPA

Dapper

定位

元数据 + ORM + UI 姿色

模范 .NET ORM

Java 模范 ORM

微 ORM / SQL 映射

映射界说Map/Attr代码 +Sys_MapAttr库表

特色 / Fluent API

注解 / XML

手写 SQL

查询口头QueryObject+SqlBuilder

LINQ

HQL / Criteria / JPQL

原始 SQL

变更追踪

无(显式 Update)

有(Session)

UI 元数据

内置(控件、布局、从表)

主从 / 多对多EnDtl/AttrOfOneVSM一等公民

导航属性竖立

关连映射

自行完竣

自动建表CheckPhysicsTable

Migrations

hbm2ddl

多数据库SqlBuilder

方言分支

提供商插件

方言

取决于 SQL

低代码友好

极高

强类型建设体验

中(Row + 部分封装属性)

学习弧线(纯 CRUD)

中(需理会 Map 体系)

中高

6.2 飞驰 ORM 的上风

元数据一体:归并Attr姿色列类型、控件、外键、摆设、默许值,盘算推算器与运行引擎零阻抗。

企业功能内建

:主从表、多对厚和顺、列表查询、权限位、关连范例,减少重叠劳动。

低代码原生:运行期可GenerMap,字段可来自数据库竖立,合适用户自界说表单。

久经分娩考证

:2002 年于今,与 CCFlow 过程场景深度耦合(附件、签名、公文、轨迹等控件类型)。

多数据库与国产库:EntityDBAccess内可见 Oracle、MySQL、PostgreSQL、达梦、东谈主大金仓瓜分支。

6.3 飞驰 ORM 的局限

非模范 ORM

:无法成功用于平凡 .NET 神色的「引包即用」,与 EF Core 生态(LINQ、迁徙、器用链)不兼容。

弱类型 Row

:大型团队纯代码建设时,枯竭编译期字段查验,重构依赖全局搜索。

无当代查询空洞:莫得 LINQ / IQueryable,复杂查询依赖SqlBuilder字符串,可读性与组合性弱于 EF。

无变更追踪:更新需显式调用Update并指定字段,易遗漏或误更新。

XML 遗产:GenerMap(xml)与代码EnMap双旅途并存,加多和讲理智包袱。

测试与 Mock:Entity与DBAccess静态耦合缜密,单位测试需依赖数据库或多半封装。

6.4 适用场景判断

场景

提议

飞驰 BPM / CCFlow / JFlow 二次建设

必须使用

本 ORM,无替代

低代码表单 + 过程 + 组织结构一体部署

最合适

全新 .NET 业务系统、与 BPM 无关

不保举,应选 EF Core + 孤苦 DTO

仅需高性能只读查询

可在 Entities层旁路DBAccess.RunSQL,但失去元数据收益

与外部 ORM 共存

仅提议范围明晰的数据同步,幸免归并表双映射

七、典型建设模式示例

7.1 声明式实体(代码优先)

// 1. 字段常量类public class XxxAttr { public const string Title = "Title"; }// 2. 实体类public class Xxx : EntityNoName{ public override Map EnMap { get { if (_enMap != null) return _enMap; Map map = new Map("My_Xxx", "示例"); map.AddTBStringPK(XxxAttr.No, null, "编号", true, false, 1, 50, 20); map.AddTBString(XxxAttr.Title, null, "标题", true, false, 0, 200, 30); map.AddDDLSysEnum("Status", 0, "情景", true, false, "XxxStatus"); _enMap = map; return _enMap; } }}// 3. 蚁集类public class Xxxs : EntitiesNoName{ public override Entity GetNewEntity => new Xxx;}

7.2 运行时使用

Xxx en = new Xxx;en.No = "001";en.SetValByKey(XxxAttr.Title, "测试");en.Insert;Xxxs ens = new Xxxs;ens.RetrieveByAttr("Status", 1);Xxx en2 = new Xxx("001");en2.RetrieveFromDBSources;string title = en2.GetValStringByKey(XxxAttr.Title);

7.3 低代码动态表单(元数据优先)

盘算推算器保存字段 → Sys_MapAttr;

MapDtl.GenerMap/MapData.GenerMap合成Map;

GEDtl/GEEntity行为通用实体承载数据;

前端凭证 MapAttrJSON 渲染控件。

八、回来

飞驰 ORM 是一段从 2002 年 XML 映射演进到 2003 年Map/Attr/Attrs代码化元数据、并在二十余年中捏续膨胀为低代码支配框架底座的本理会线。

它的现实不是「对象—关系映射库」,而是:

用斡旋的 Map元数据,同期姿色数据库结构、实体行为、UI 控件、主从与多对多关系、外部数据源与查询条目,并驱动 CCFlow、JFlow、组织结构与低代码表单的全人命周期。

与 Entity Framework、Hibernate 等市面 ORM 比拟,飞驰 ORM 在模范性、强类型、当代查询上不占优,但在低代码、过程、表单、组织一体化场景具有弗成替代的语义内聚上风。理会这一范围,是正确使用和膨胀飞驰 BPM 平台的前提。

附录:中枢类型索引

类型

旅途

诠释

MapEn/MapExt/Map.cs

实体元数据根对象

Attr/AttrsEn/MapExt/Attr.cs

字段元数据与蚁集

Entity/EntitiesEn/Entity.cs、En/Entities.cs

实体与蚁集基类

RowEn/Row.cs

字段值容器

SqlBuilderEn/SqlBuilder.cs

SQL 生成

EntityDBAccessEn/EntityDBAccess.cs

捏久化实施

QueryObjectEn/QueryObject.cs

查询构造器

EnDtl/AttrOfOneVSMEn/EnDtl.cs、En/MapExt/AttrOfOneVSM.cs

从表与多对多

MapAttrSys/MapAttr.cs

低代码字段元数据(库表)

MapData/MapDtlSys/MapData.cs、Sys/MapDtl.cs

表单/从表界说

SFTable/SFDBSrcSys/SFTable.cs、Sys/SFDBSrc.cs

外部数据源 星空体育app2026世界杯官方下载





Copyright © 1998-2026 星空体育app2026世界杯官方下载™版权所有

osukatech.com备案号 备案号: 

技术支持:®星空体育 RSS地图 HTML地图