Я хочу изменить тип данных столбца, помеченного как альтернативный ключ.
Я изменил тип данных в коде и создал новый сценарий миграции, но сценарий выдает ошибку.
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; }
}
Здесь Email (тип данных int в коде, который ошибочно кодируется во время разработки) должен быть уникальным. Поэтому я использовал свободный API, чтобы сделать его уникальным.
Затем я создал скрипт начальной миграции и запустил скрипт
Таблица создана с электронной почтой как ограничение уникального ключа
Таблица как эта точка не имеет каких-либо строк.
Теперь я исправил тип сообщения электронной почты в строку.
Затем я создал второй скрипт миграции и при попытке запустить я получаю следующую ошибку
Объект 'AK_Person_Email' зависит от столбца 'Email'.
ALTER TABLE ALTER COLUMN Ошибка электронной почты, поскольку один или несколько объектов имеют доступ к этому столбцу.
Как обновить тип данных.