是否可以使用 EF 核心修改外键的现有值?

Is it possible to modify existing value of foreign key with EF core?

我有两个具有一对一关系的实体:

public class User
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    public string CarId { get; set; }
    public Car Car{ get; set; }
}

 public class Car
 {
    [Key]
    public int Id { get; set; }

    [Required]
    public string PlateNumber{ get; set; }

    [Required]
    public string Description { get; set; }

    public int UserId { get; set; }
    public User User { get; set; }
}

假设我有 ID 为 1 的用户,它与 ID 为 5 的汽车相关(我有 5 辆汽车已经插入到 table“汽车”中)。 是否可以使用 EF Core 修改用户与汽车 (1->5) 与另一辆汽车(例如 ID 为 2 的汽车并变为 1->2)的现有关系,如果可以,您能举个例子吗?

您的数据模式无效,将被编译。您不能在 Car class 中同时拥有 UserId 和 User 中的 CarId。所以你必须 select 一件事情。恕我直言,最好将 UserId 保留在 Car 中,但从 User 中删除 CarId。如果您使用 Net 5+,您可以在用户中保留一辆 Car 属性,否则您将不得不分配 List

public class User
{
    [Key]
    public int Id { get; set; }

       .....

     public virtual Car Car { get; set; }

     //but it is much better
      public virtual List<Car> Cars { get; set; }
  
}


 public class Car
 {
    [Key]
    public int Id { get; set; }

    ....

    public int UserId { get; set; }
    public virtual User User { get; set; }
}