当我们设计数据库表时,我们经常使用字符串类型或GUID类型来方便数据库表。这对于数据库表记录的迁移非常方便,有时在处理关联记录时会提前提前的ID值。但是有时在插入数据记录时,他们通常会忽略ID.ID的分配。允许自动分配,我们可以自动分配数据访问基类中的GUID主键。
当我们设计基于SQLSUGAR的框架时,物理类定义了基类实体,如以下代码所示。
通常,它可以扩展弦,整形手术和其他类型的物理类别。
默认实体定义为整形手术,如下所示。不需要插入长大的主要钥匙。记录时,它将获得相应的ID值。
对于字符类型ID键,可以在构造函数中初始化ID。
或当我们插入新记录时,我们会判断主要密钥是空的,然后为其分配一个值,还是唯一的GUID值。
使用Guid.NewGuid()处理。这个优势是您可以获得独特的指导值,缺点是ID是无序的,没有秩序,对ID的ID毫无意义。
为了解决此问题,我们仍然介绍ABP VNEXT的规则以生成有序的GUID值。同时,当数据库访问基类时,当插入记录和更新记录时)是否为空,将其分配给空的guid,可以完美地解决问题。
这样,当我们定义物理类时,就无法初始化ID值,从而使其保持空白,从而使用户可以主动设置值或自动基础类处理分配。
对于GUID或字符串类型的ID值,为什么要设置有序的GUID,您可以参考链接:/GUID-HANS /GUID-HAGUID-HAGUID-HANS /GUID /GUID /GUID /GUID /GUID /GUID /GUINGUIN-HAN-HAN-HAN'S
在正常情况下,当我们使用SQLSUGAR插入新记录时,这是以下代码
为了确定ID是否为空,我们需要判断ID类型,并确定字符串类型还是GUID类型。如果它是空的,它将自动分配。因此,如以下代码所示,我们可以在插入之前进行判断处理。
其中,SetIdForGuids是获得有序的GUID值的函数。
根据不同的数据库特性,构建不同的GUID值。如果是字符串的ID,我们将均匀地使用sequeentialAsstring方法。这也是字符串的常规排序,因此我们不仅获得了非重复的GUID值,而且您可以对ID进行排序,而ID是按顺序排序的。
添加用于测试的几种字典类型(字符串ID)的记录。
您可以看到,ID的类型前缀部分是相同的,并且以后的ID中以正顺序排序的更改是根据写作时间的顺序处理的。
原始:https://juejin.cn/post/7098544910780858375