Asp.net mvc EDMX/EF删除现有主键列,并使用主键添加新列

Asp.net mvc EDMX/EF删除现有主键列,并使用主键添加新列,asp.net-mvc,edmx,Asp.net Mvc,Edmx,我有以下ASP.NETMVC中的场景-代码优先 [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; } } publi

我有以下ASP.NETMVC中的场景-代码优先

[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; }
}
  • 目前“Api”表到“BookingPluginFig”有一对一的关系-我想把它改为一对多

  • “BookingPluginFig”表已

    [Key,ForeignKey("Api")]                
    public int ApiId { get; set; }
    
    我想删除此列,它是主键,我想添加新列作为主键(自动递增)

    目前,此“APID”是主键和外键。我希望保持“APID”是外键,但不是主键

  • 我在现有的表中已经有很多数据


    我如何才能做到这一点?

    您修改后的BookingPluginFig类:

    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; } 
    
    //与BookingPluginFig的一对多关系
    公共虚拟ICollection BookingPluginFigures{get;set;}
    

    这就是添加新主键和定义关系所需的全部内容。如果需要,请备份数据库,添加迁移和更新数据库。

    修改后的BookingPluginFig类:

    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; } 
    
    //与BookingPluginFig的一对多关系
    公共虚拟ICollection BookingPluginFigures{get;set;}
    
    这就是添加新主键和定义关系所需的全部内容。如果需要,可以备份数据库,添加迁移和更新数据库