更新主表的主键模式UpdateKeyMode枚举详解(2)
作者:C/S框架网  发布日期:2018/08/29 13:57:30
  更新主表的主键模式UpdateKeyMode枚举详解(2)


C# Code:

/// <summary>
/// 更新主表的主键模式
/// </summary>
public enum UpdateKeyMode
{
   /// <summary>
   /// 未指定.单据号码由用户手工输入
   /// </summary>
   None,
   
   /// <summary>
   /// 自动生成流水号
   /// </summary>
   OnlyDocumentNo,
   
   /// <summary>
   /// 自动生成36位GUID(全球唯一标识)
   /// </summary>
   OnlyGuid
}

//来源:C/S框架网(www.csframework.com) QQ:23404761


模拟主从表结构:

主表M(SONO varchar(36)),SONO字段为主表的主键。

从表D(RowID varchar(36), SONO varchar(36)),RowID为明细表主键,SONO为明细表的外键。


UpdateKeyMode枚举类型详解:

1. None: 单据号码由用户手工输入。
新增记录时必须给主表的SONO字段手工赋值,如:SO8888888。
提交数据前,必须给从表的SONO字段赋值为SO8888888,若由多条记录可循环处理逐条赋值。
明细表的RowID务必在新增明细记录时赋值(取GUID值)。
通过以后处理即完成主外键设置,可提交数据。
重点:若采用此模式,ORM模型的 isDocFieldName 参数必须设为false!

2. OnlyDocumentNo:单据号码自动生成。
若采用单据号码自动生成的模式,首先在主表的ORM Model 指定主键对应的字段名,参考下图:

贴图图片

ORM_TableAttribute:定义资料表对应的ORM模型的特性类,指定PrimaryKey的字段名,如:INNO。

ORM_FieldAttribute:定义每个字段对应的ORM模型的特性类。
若isPrimaryKey=true,表示该字段为主键。
若isDocFieldName=true,表示该字段为字段生成的单据号码(流水号码)。

_KeyName=INNO:定义该表的主键字段名的静态变量(也可用常量定义)。

参考上图红圈重点标注的配置信息,即可正确提交数据,单据号码会自动生成,若同时提交明细表资料,外键的值开发框架底层会自动赋值处理。


3. OnlyGUID:自动生成36位GUID(全球唯一标识)。
新增记录时必须给主表的SONO字段指定GUID,如:aa870685-a11b-45e9-b1c0-8e9eac326afd
提交数据前,必须给从表的SONO字段赋值为 aa870685-a11b-45e9-b1c0-8e9eac326afd,
若由多条记录可循环处理逐条赋值。
明细表的RowID务必在新增明细记录时赋值(取GUID值)。
通过以后处理即完成主外键设置,可提交数据。

重点:若采用此模式,ORM模型的 isDocFieldName 参数必须设为false!





参考文章:


手动和自动生成业务单据号码UpdateKeyMode详解(1)





上一篇 下一篇