EDMX / EF删除现有的主键列并使用主键添加新列

问题描述 投票:1回答:1

我在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. 当前到“ BookingPluginConfig”的“ Api”表具有一对一关系-我想将其更改为一对多

  2. 'BookingPluginConfig'表具有

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

    我想删除此列作为主键,并且我想添加新列作为主键(自动递增)

    当前,此“ ApiId”既是主键又是外键。我想保留“ ApiId”为外键,但不作为主键

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

我该怎么做?

asp.net-mvc edmx
1个回答
0
投票

您修改后的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; }
}

Navigation属性,这是API类中的唯一更改:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.