我想更改标记为备用键的列的数据类型。
我更改了代码中的数据类型并创建了新的迁移脚本,但是该脚本引发错误。
public class Person
{
[Key]
public int PersonId { get; set; }
public int Email { get; set; }
}
public class TestEntities:DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=ff;Integrated Security=SSPI;");
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().HasAlternateKey(a => a.Email);
base.OnModelCreating(modelBuilder);
}
public DbSet<Person> Person { get; set; }
}
此处的电子邮件(在开发过程中错误编码的代码中的int数据类型)必须唯一。因此,我使用了流利的api使其具有独特性。 然后,我创建了初始迁移脚本并运行了该脚本 该表是使用电子邮件作为唯一键约束创建的 此时的表没有任何行。 现在,我将电子邮件的数据类型更正为字符串。 然后,我创建了第二个迁移脚本,当我尝试运行时,出现以下错误
对象“ AK_Person_Email”取决于列“ Email”。 ALTER TABLE ALTER COLUMN电子邮件失败,因为一个或多个对象访问此列。
如何更新数据类型。
答案 0 :(得分:0)
您不能更改备用键(或主键,外键或索引)中包含的列的数据类型。为了实现您的目标,请删除备用键,更改列的数据类型,然后再次创建备用键。