EDMX / EF Удалить существующий столбец первичного ключа и добавить новый столбец с первичным ключом - PullRequest
1 голос
/ 16 октября 2019

У меня есть следующий сценарий в ASP.net MVC - код сначала

[Table("api")]
public class Api
{
   [Column("Id")]
   public int Id { get; set; }

   [Column("api_key")]
   public string ApiKey { get; set; }

   public virtual BookingPluginConfig BookingPluginConfig { get; set; }
}

public class BookingPluginConfig
{
   [Key,ForeignKey("Api")] 
   public int ApiId { get; set; }

   public virtual Api Api { get; set; }
}
  1. В настоящее время таблица «Api» для «BookingPluginConfig» имеет отношение один к одному - я хочу изменить егоодин ко многим

  2. В таблице 'BookingPluginConfig' есть

    [Key,ForeignKey("Api")]                
    public int ApiId { get; set; }
    

    Я хочу удалить этот столбец, который является первичным ключом, и добавить новый столбец какпервичный ключ (автоинкремент)

    В настоящее время этот 'ApiId' является первичным ключом, а также внешним ключом. Я хочу, чтобы '' ApiId '' был внешним ключом, но не первичным ключом

У меня уже много данных в существующей таблице

Как я могу это сделать?

1 Ответ

0 голосов
/ 17 октября 2019

Ваш измененный класс BookingPluginConfig:

public class BookingPluginConfig
{
  [Key(), Required]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int ID { get; set; }

  [ForeignKey("Api")] 
  public int ApiId { get; set; }

  public virtual Api Api { get; set; }
}

Свойство навигации, которое является единственным изменением в классе API:

//one to many relation to BookingPluginConfig
public virtual ICollection<BookingPluginConfig> BookingPluginConfigs { get; set; } 

Это все, что вам нужно для добавления нового первичного ключаи определить отношение. Возьмите резервную копию базы данных, если хотите, добавьте миграцию и обновите базу данных.

...