更新 table 以具有唯一的生成的 int(这不是主键)

Updating a table to have a unique, generated int (that is not the primary key)

我想更新现有的 table 以拥有一个唯一的、自动生成的 int 字段。我如何在 entity framework 中执行此操作(代码优先)?


更长的解释:

客户希望 table 中的每条记录都有一个唯一标识符作为其他 databases/bookkeeping 的参考编号。通常我会简单地使用主键,但在这种情况下主键是敏感信息(毫无疑问是设计缺陷)。

我想更新此 table 以拥有一个与身份无关的唯一、自动生成的 int(我想如果它有关系也没什么大不了的)。如果所有现有记录也可以生成值,那就更好了。

另一种解决方案是更改数据库中的所有主键(和任何引用),但这可能更加困难。不过,我愿意接受其他解决方案。

感谢您的帮助。

如果你想自动生成,自动递增是唯一的解决方案。不说前端。你可以选择独一无二的 属性.

如果您在谈论像 sku#00056 这样的自定义编号,您必须通过存储过程。

并且您是否有权访问前端代码(如果有)。去吧。

EF 没有任何原生内容,但您可以 generate unique values for using guid's 用于 属性(使用 NEWID() T-SQL 函数填充)。

此外,如果您以类似的方式使用 SQL 2012+ 来集成 属性 纯数值,您还可以创建一个新的 SEQUENCE

为了解决这个问题,我最终编写了一个脚本来复制 table 中的所有内容,以便它们都获得新的 ID。然后我将所有外键从原始记录移动到副本。然后,我删除了原件。

在这种令人费解的方式中,我能够将所有 ID 更改为不那么专有的东西,然后可以放心地在其他地方使用该 ID。