关于ORM实体类主键设置的几点建议(Tag:复合主键,ISID,PK)|C/S开发框架
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# 全选
3. isid 字段 isid字段是开发框架定义使用最多的字段名,指的是自增字段(Is Identity),可以作为记录的主键使用,但不可以作为外键使用。 isid可以作为明细表的主键,明细表的外键通常是单据号码或GUID、RowID。 在以下情况定义isid为主键: a) 业务主键支持修改的情况下。框架内规定业务主键是不可以修改的,如需要修改,必须定义一个isid字段作为数据更新使用的主键(用于生成Where isid=@isid)。如客户资料的业务主键是CustomerCode,界面上需要支持修改,这种情况下必须定义isid为主键。 b) 数据字典的主键。通常数据字典的主键是编号,比如货币:CurrencyCode,客户:CustomerCode,单位:UnitCode,但这些都是业务主键,作为其它业务表的主外键关联使用的。这些数据字典可以定义一个isid字段作为数据更新使用的逻辑主键。 c) 建议不要将isid定义为主键,而采用业务主键和平台主键。 扫一扫加微信 扫一扫加作者微信
参考文档:
关于ORM实体类主键设置的几点建议(Tag:复合主键,ISID,PK) C# FormTool.SetCursor设置光标为等待状态,提高用户体验-C/S开发框架 C#直接使用DllImport外部Dll的方法-C/S开发框架 GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架 C#中 object类型,c# object-C/S开发框架 C# System.ServiceProcess类操作Windows服务,判断服务状态,启动停止服务-C/S开发框架 C#.NET Log4Net日志的基础用法-C/S开发框架 .NET 开源免费图表组件库 - ScottPlot(Winform,WPF 通用)-C/S开发框架 GitBlit - 创建、推送VS解决方案源码添加到版本库-C/S开发框架 Winform C/S框架 - FastReport.NET组件下载-C/S开发框架 frmBaseDataDictionary类成员介绍|C/S开发框架|开发教程 VS.NET 窗体继承后按钮或组件的位置不正确解决方案|C/S开发框架 CSFramework.DB.DbTools类下载|C/S开发框架 DbFramework数据库实体类对象模型框架( 支持MsSQL,MySQL,Oracle三种数据库)|C/S开发框架 WinFramework轻量级开发框架 | 代码生成器(CodeGenerator)简介|C/S开发框架
其它资料:
什么是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内容管理系统 | |