关于ORM实体类主键设置的几点建议(Tag:复合主键,ISID,PK)
关于ORM实体类主键设置的几点建议(Tag:复合主键,ISID,PK)
1. 业务主键和平台主键 业务主键是业务资料表的主键,作为主键或其它表的外键使用,如CustomerCode, StockCode或销售订单号码SONO等作为业务主键。平台主键是基于业务表存在复合主键而设计的,作为开发框架内部使用的主键,不参于业务关联运算,不在界面显示,不体现报表等特点。 平台主键主要用途是数据更新时提供给SQL命令生成器生成SQL脚本,如生成:Where RowID=@RowID, RowID是指平台主键,目的是生成Where条件,替换冗余的复合主键生成的多个AND关系的Where条件, 如:Where SupplierCode=@SupplierCode AND StockCode=@StockCode 重点:
2. 复合主键的处理 跟据业务的需要,有些数据表需要定义复合主键,为了使程序设计或SQL关联查询简单化,建议有复合主键的资料表定义一个唯一主键,如RowID,作为平台主键(PK),类型:VARCHAR(32),可以在客户端新增时赋值: C# Code: DataRow["RowID"]=Guid.NewGuid().ToString().Replace("-",""); CSFramework V2.2版:参考系统管理模块tb_CompanyInfo表的ORM定义。 3. isid 字段 isid字段是开发框架定义使用最多的字段名,指的是自增字段(Is Identity),可以作为记录的主键使用,但不可以作为外键使用。 isid可以作为明细表的主键,明细表的外键通常是单据号码或GUID。 在以下情况定义isid为主键: a) 业务主键支持修改的情况下。框架内规定业务主键是不可以修改的,如需要修改,必须定义一个isid字段作为数据更新使用的主键(用于生成Where isid=@isid)。如客户资料的业务主键是CustomerCode,界面上需要支持修改,这种情况下必须定义isid为主键。 b) 数据字典的主键。通常数据字典的主键是编号,比如货币:CurrencyCode,客户:CustomerCode,单位:UnitCode,但这些都是业务主键,作为其它业务表的主外键关联使用的。这些数据字典可以定义一个isid字段作为数据更新使用的逻辑主键。 c) 建议不要将isid定义为主键,而采用业务主键和平台主键。 扫一扫加微信
参考文档:
ISID字段介绍,能直接用ISID自增字段作为主键使用吗? 开发框架支持的两种ORM模型(静态类/实体类) <表结构静态类>与<实体类>区别与应用 C# Winform DataGridView设置选定的区域为不可编辑 数据字典未指定表名或主键!DAL类名必须加DefaultORM_UpdateMode特性 CSFramework.DB关于设置全局变量CommandTimeOut/ConnectionTimeOut的测试案例 数据字典基础资料窗体主键设置为自动生成流水号码解决方案 SQL获取表结构的表名,字段名称,类型,Identity,PK主键,FK外键,IDX索引,字段说明等资料 sp_sys_GetTableFieldDef存过:SQL获取表结构的字段名称,类型,Identity,PK主键,FK外键,IDX索引,字段说明 Winform软件快速开发平台 - 关于数据权限,表格列权限控制两种解决方案 CSFramework代码生成器生成三种ORM模型类(静态类ORM,实体类ORM,标准对象) Winform框架 - 批量设置组织机构用户或权限(批量设置部门用户或部门权限) 公司资料设置sys_CompanyInfo表变更主键为CompanyCode DbFramework数据库实体类对象模型框架( 支持MsSQL,MySQL,Oracle三种数据库) DevExpress扁平化按钮样式设置 | Winform扁平化按钮图标UI开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |