我想更新现有表,以获得一个唯一的,自动生成的int字段。我如何在实体框架中执行此操作(代码优先)?
更长的解释:
客户希望表中的每条记录都有唯一的标识符作为其他数据库/簿记的参考号。通常我会简单地使用主键,但在这种情况下,主键是敏感信息(设计缺陷,毫无疑问)。
我想更新这个表,以获得一个与身份无关的独特的自动生成的int(我想这不是什么大不了的事)。如果所有现有记录都可以生成值,则可以获得奖励。
另一种解决方案是更改数据库中的所有主键(和任何引用),但这可能更难。不过,我愿意接受其他解决方案。
感谢您的帮助。
答案 0 :(得分:0)
EF没有任何原生内容,但您可以generate unique values for using guid's获取属性(使用NEWID()T-SQL函数填充)。
此外,如果您以类似的方式使用SQL 2012+来集成仅数值的属性,则还可以创建新的SEQUENCE。
答案 1 :(得分:0)
为了解决这个问题,我最终编写了一个脚本来复制表格中的所有内容,以便为所有人提供新的ID。然后我将任何外键从原始记录移动到副本。然后,我删除了原件。
在这种错综复杂的方式中,我能够将所有ID更改为不太专有的内容,然后可以在其他地方使用该ID而无需担心。
答案 2 :(得分:-1)
如果你想自动生成,自动增量是唯一的解决方案。不是说前端。你可以去寻找独特的财产。
如果您正在谈论像sku#00056这样的自定义编号,那么您必须完成存储过程。
如果你有权访问前端代码,如果有的话。为此而努力。