我应该如何处理在 Linq / Entity Framework 中维护新记录的行标识?
在 SQL 中使用 Linq 和 EF 时创建新的唯一共享密钥的正确方法是什么?
我可以在插入记录时使用 GUID,但我只希望我的密钥中包含 7 个数字或字符,因为它们将出现在我的 MVC 应用程序的 URL 中。如果这不是一个选项,或者使用 GUID 更好,请告诉我。
What is the proper way to create a new unique shared key when using Linq and EF with SQL?
I could use a GUID upon inserting the record but I only want want my keys to have 7 digits or characters in it as they will appear in the URL of my MVC application. If this isn't an option, or it's just better with GUID's let me know.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您不需要跨机器边界的唯一密钥,那么我只需使用自动递增 1 的
bigint
/identity(这是默认值)。使用 EF 添加新实体时不必指定身份,它将自动分配。一旦分配完毕,您就可以将其用作 FK。在我看来,GUID 仅在这种情况下有用,如果您必须保证密钥在多个数据库中是唯一的,即您在一台计算机 (A) 上创建密钥并希望将数据传输到另一台计算机机 (B),保留钥匙。对于
bigint
键来说这是不可能的,因为机器 B 可能已经插入了具有相同键的其他数据。If you do not need a unique key across machine boundaries then I would just go with a
bigint
/idenity that auto-increments by 1 (which is the default). You do not have to specify the identity when adding a new entity with EF, it will be auto-assigned. Once it has been assigned you can then use it as a FK.In my opinion
GUIDs
are only useful in this context if you have to guarantee that the key is unique across multiple databases, i.e. you create they key on one machine (A) and want to transfer the data to another machine (B), retaining the key. This is not possible withbigint
keys since machine B might have inserted other data with the same key already.