唯一号码标识符生成

xwr*_*wrs 3 .net c# entity-framework

我必须为数据库中的记录创建生成唯一编号标识符的逻辑.id,在数据库中生成的是一个单独的列.

此时,当用户调用"创建记录"动作时,我保存新记录,获取其数据库ID,使用此ID生成记录号,然后将其放入编辑表单.使用这种方式意味着所有实体字段都应该可以为空以将记录保存到数据库.

我不喜欢这样.我知道那应该是更好的方式.

是否有更好的做法来生成唯一的数字标识符?生成非唯一随机数的可能性是多少?

谢谢

Ste*_*gan 7

您正在使用的模式,只是为了获取ID而保存空记录,并不是一个好的模式.

标准方法和我推荐的方法是创建记录只显示一个空表格(此时的ID通常为0).用户填写表单,数据仅在用户单击"保存"时提交到数据库.ID应为IDENTITY列.

您的方法存在的问题是,如果用户没有填写表单,您的数据库中会出现大量不完整的记录.当然,这使得处理数据验证和完整性变得更加困难.

如果您真的必须向用户显示ID ,则另一种方法是使用包含"Next Record ID"列的行的单独表.此列可以递增并作为原子操作返回,并用于填充新记录的ID.您仍然不创建真实记录,只需在"创建记录"操作中增加此"下一记录ID".使用此方法,您可以通过在"记录ID"表中为每个实体分别使用相同的行来对多个实体使用相同的方法.请记住,如果用户最终没有将记录保存到数据库,则ID仍将"用完".这些数字仍然是唯一的,并且按时间顺序排列,但不一定是连续的.