将所有 PK 和 FK GUID 列和关系转换为 int 的最快方法是什么?

发布于 2024-09-13 17:53:58 字数 345 浏览 7 评论 0原文

我目前正在开发一个 ASP.NET MVC 应用程序,数据库中有大量 PK-FK 关系。在开发之初,与我合作的团队投票反对我对所有 PK 使用 INT 的建议……他们决定使用 GUID。

长话短说...团队已经分道扬镳,现在我可以控制改变事情...我从 WebForms 切换到 MVC,我想将所有的 Guid 转换为 Ints...我讨厌丑陋的 URL,比如“恶心!!加上索引指南涉及的开销...加上它可能对我的 Linq to Entities 模型没有帮助。

使用 SQLServer 2008、ASP.NET MVC 2、Linq to Entities(实体框架)

任何人都知道一种快速方法将那些讨厌的引导转换为整数?

I'm currently developing an ASP.NET MVC application with a ton of PK-FK relationships in the database. In the beginning of development, the team I WAS working with voted against my recommendation to use INTs for all PKs... they decided to use GUIDs.

Long story long... the team has split ways, and now I have control to change things... I switched from WebForms to MVC and I would like to convert all of the Guids to Ints... I hate the ugly URL's like " YUCK!! Plus the overhead involved in indexing guids... plus it probably doesn't help my Linq to Entities model.

Using SQLServer 2008, ASP.NET MVC 2, Linq to Entities (Entity Framework)

Anyone know a quick way to convert those pesky guids into ints?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

提赋 2024-09-20 17:53:58

我假设您还希望 INT 成为 IDENTITY。以下是迁移数据的方法:

  1. 将应用程序置于脱机状态,不能进行数据库更新,暂停所有 SQL 代理作业、导入等
  2. 对于每个 PK:
    • 创建一个具有相同结构的复制表 + 1 个新的 int Identity(1,1) 列
    • 将数据从旧表复制到新表
    • 使用 sp_rename 交换表,使新表成为旧表
    • 对所有带有 PK 的表进行冲洗、循环和重复(表现在同时具有 GUID 和 INT)
  3. 对所有具有 PK 的表进行冲洗、循环和重复(表现 每个 FK:
    • 在 FK 源表(具有约束的表)上添加一个新的 INT 列
    • 运行更新,根据 GUID 连接两个表,并将新的 int PK 分配给关系列
  4. 添加回 FK 约束,现在在 INT 列上
  5. 删除 GUID 列

I assume you also want the INTs to be IDENTITYs. Here is how to migrate the data:

  1. Put application offline, no DB updates can occur, suspend all SQL Agent jobs, imports etc
  2. For each PK:
    • create a copy table with same structure + 1 new int identity(1,1) column
    • copy data from old table to new table
    • use sp_rename to swap the tables so that the new table becomes the old table
    • Rinse, cycle and repeat for all tables with PKs (tables now have both GUIDs and INTs)
  3. For each FK:
    • add a new INT column on the FK source table (the one that has the constraint)
    • run an update that joins the two tables on the GUIDs and assigns the new int PKs to the relation column
  4. Add back FK constaints, now on the INT columns
  5. Drop GUID columns
时光瘦了 2024-09-20 17:53:58
  1. 编写所有主键和外键的生成脚本
  2. 删除所有主键和外键
  3. 将所有 GUID 列从 SomethingID 重命名为 SomethingGUID
  4. 创建新的 int SomethingID 列
  5. 重新创建主键
  6. 编写脚本以使用 GUID 关系更新所有外键
  7. 重新创建外键键
  8. 删除 GUID 列
  1. Script the generation of all primary and foreign keys
  2. Drop all primary and foreign keys
  3. Raname all GUID columns from SomethingID to SomethingGUID
  4. Create new int SomethingID columns
  5. Recreate primary keys
  6. Write scripts to update all foreign keys using GUID relationships
  7. Recreate foreign keys
  8. Drop GUID columns
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文