关于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
 
重点:

a) 存在复合主键的资料表必须定义一个平台主键,如:RowID。

b) 当资料表只有一个主键时,只要定义业务主键即可,如:SONO。

2. 复合主键的处理

   跟据业务的需要,有些数据表需要定义复合主键,为了使程序设计或SQL关联查询简单化,建议有复合主键的资料表定义一个唯一主键,如RowID,作为平台主键(PK),类型:VARCHAR(32),可以在客户端新增时赋值:

C# 全选
DataRow["RowID"]=Guid.NewGuid().ToString().Replace("-","");
CSFramework V2.2版:参考系统管理模块tb_CompanyInfo表的ORM定义。

3. isid 字段

isid字段是开发框架定义使用最多的字段名,指的是自增字段(Is Identity),可以作为记录的主键使用,但不可以作为外键使用。
 

isid可以作为明细表的主键,明细表的外键通常是单据号码或GUID、RowID。



在以下情况定义isid为主键:

a)  业务主键支持修改的情况下。框架内规定业务主键是不可以修改的,如需要修改,必须定义一个isid字段作为数据更新使用的主键(用于生成Where isid=@isid)。如客户资料的业务主键是CustomerCode,界面上需要支持修改,这种情况下必须定义isid为主键。

b)  数据字典的主键。通常数据字典的主键是编号,比如货币:CurrencyCode,客户:CustomerCode,单位:UnitCode,但这些都是业务主键,作为其它业务表的主外键关联使用的。这些数据字典可以定义一个isid字段作为数据更新使用的逻辑主键。

c) 建议不要将isid定义为主键,而采用业务主键和平台主键。
 
C/S架构快速开发框架-内容图片-底图-宽-开发框架文库

C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:销售订单的附件管理bug报告
下一篇:C#.NET开发框架的业务主键和逻辑主键定义
评论列表

发表评论

评论内容
昵称:
关联文章

关于ORM实体设置建议(Tag复合ISIDPK)
C#.NET开发框架业务和逻辑定义
CSFramework.CodeGeneratorV6.0-生成实体ORM
FAQ:明细表删除按钮删除一条数据,保存后发现其他记录也被删除了!
开发框架支持两种ORM模型(静态/实体)
ISID字段介绍,能直接用ISID自增字段作为主使用吗?
CSFramework代码生成器生成三种ORM模型(静态ORM实体ORM,标准对象)
SQL获取表结构表名,字段名称,类型,Identity,PK,FK外,IDX索引,字段说明等资料
sp_sys_GetTableFieldDef存过:SQL获取表结构字段名称,类型,Identity,PK,FK外,IDX索引,字段说明
ORM_TableAttribute详解:资料表特性定义
数据字典基础资料窗体设置为自动生成流水号码解决方案
更新模式UpdateKeyMode枚举详解(2)
公司资料设置sys_CompanyInfo表变更为CompanyCode
企业版V4.0 - 并发控制说明
代码生成器 CodeGenerator - 生成ORM
主从表表模型重点参数配置|UpdateKeyMode|ORM Model
DbFramework数据库实体框架新增个方法
关于扩展权限、扩展功能按钮及自定义功能命名|C/S框架网
关于NavBarControl击ExpandButton缩放后不能控制Dock组件问题
ORM_FieldAttribute详解:字段特性定义,框架内核根据此特性自动生成SQL脚本

热门标签