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



我在 MVC 中有 folowwing 场景 ASP.net - 代码优先

[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"是外键,但不是主键

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

我该怎么做?

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

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

最新更新