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

Gui*_*ody 3 sql-server linq-to-entities database-design guid asp.net-mvc-2

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

长篇故事......团队分道扬and,现在我可以控制改变事物......我从WebForms切换到MVC,我想将所有的Guid转换为Ints ...我讨厌丑陋的URL就像"YUCK !!加上索引guid所涉及的开销......加上它可能对我的Linq to Entities模型没有帮助.

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

任何人都知道快速将这些讨厌的guid转换成int的方法吗?

Rem*_*anu 8

我假设你也希望INT是IDENTITY.以下是迁移数据的方法:

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