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

标签 sql-server database-design asp.net-mvc-2 linq-to-entities guid

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

长话短说......团队已经 split 了,现在我可以控制改变事情......我从WebForms切换到MVC,我想将所有Guids转换为Ints......我讨厌丑陋的URL "YUCK!!加上索引 guid 所涉及的开销......加上它可能对我的 Linq to Entities 模型没有帮助。

使用 SQLServer 2008、ASP.NET MVC 2、Linq to Entities( Entity Framework )

任何人都知道将那些讨厌的 guid 转换为整数的快速方法吗?

最佳答案

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

  • 使应用程序脱机,不会发生数据库更新,暂停所有 SQL 代理作业、导入等
  • 对于每个PK:
  • 创建一个具有相同结构的复制表 + 1 个新的 int identity(1,1) 列
  • 将数据从旧表复制到新表
  • 使用 sp_rename交换表,使新表成为旧表
  • 对所有带有 PK 的表进行冲洗、循环和重复(表现在同时具有 GUID 和 INT)
  • 对于每个 FK:
  • 在 FK 源表(具有约束的表)上添加一个新的 INT 列
  • 运行更新,将两个表连接到 GUID 并将新的 int PK 分配给关系列
  • 添加回 FK 约束,现在在 INT 列
  • 删除 GUID 列
  • 关于sql-server - 将所有 PK 和 FK GUID 列和关系转换为 int 的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3425140/

    相关文章:

    sql - 如何在 SQL Server 中以整数形式创建日期、月份和年份

    sql-server - 如何显示SQL Server表索引?

    sql - 选择与另一个成功的聚合函数匹配对应的列的值的聚合函数

    database-design - 亚马逊发电机数据库模型

    jquery - 如何确保我的 jQuery .ready 最终运行

    asp.net-mvc-2 - ASP.NET MVC 2 : Disabled TextBox for DateTime returns null

    php - PHP 中的 SQL Server 存储过程输出参数

    mysql - 如何正确跟踪记录变更和变更作者

    MySQL数据库复合fk设计考虑

    c# - CaSTLe Windsor Inversion of Control (IoC) : using the Web. 配置解决依赖关系