我更改了实体中的主键.当我尝试在SQl Azure上运行迁移时,它失败并且“此版本的SQL Server不支持”没有聚簇索引的表.请创建聚簇索引并重试.“
public override void Up()
{
DropPrimaryKey("User", new[] { "Id" });
AddPrimaryKey("User", "Username");
}
我怎么解决这个问题?我唯一能想到的是创建我自己的ChangePrimaryKey方法,该方法以某种方式静默创建具有正确主键的临时表,复制数据,然后替换原始.
最佳答案 SQL Azure不支持没有聚簇索引的表.这意味着您无法在没有cluestered索引的情况下创建新表,也无法删除现有表上的现有聚簇索引. Windows Azure在每个表上都需要聚簇索引.
根据Cihan Biyikoglu(MSFT),一种解决方法是使用您喜欢的索引结构创建一个新表,移动数据并在单个事务中重命名表.
使用存储过程,您可以执行以下操作:
begin
tran
exec
sp_rename 'db1','db1_old'
exec
sp_rename 'db1_new','db1'
commit
tran