【发布时间】:2026-02-09 05:35:01
【问题描述】:
我已经声明了两个类——Person 和 Vehicle,如下所示
public class Person
{
public Person()
{
this.Vehicles = new HashSet<Vehicle>();
}
[Key]
public int PersonID { get; set; }
[Required, MaxLength(50)]
public string FirstName { get; set; }
[Required, MaxLength(50)]
public string MiddleName { get; set; }
[Required, MaxLength(50)]
public string LastName { get; set; }
[Required, MaxLength(10)]
public string MobileNo1 { get; set; }
[MaxLength(10)]
public string MobileNo2 { get; set; }
[MaxLength(50)]
public string Email1 { get; set; }
[MaxLength(50)]
public string Email2 { get; set; }
public virtual ICollection<Vehicle> Vehicles { get; set; }
}
public class Vehicle
{
[Key]
public int VehicleID { get; set; }
[MaxLength(20)]
public string VehicleNumber { get; set; }
[ForeignKey("VehicleOwner")]
public int? VehicleOwnerID { get; set; }
[ForeignKey("VehicleOwnerID")]
public virtual Person VehicleOwner { get; set; }
[ForeignKey("VehicleDriver")]
public int? VehicleDriverID { get; set; }
[ForeignKey("VehicleDriverID")]
public virtual Person VehicleDriver { get; set; }
[ForeignKey("Person")]
public int? PersonID { get; set; }
[ForeignKey("PersonID")]
public virtual Person Person { get; set; }
}
这会在 Vehicles 表上生成两个外键
.ForeignKey("dbo.Person", t => t.PersonID)
.ForeignKey("dbo.Person", t => t.Person_PersonID)
而我所期望的只是
.ForeignKey("dbo.Person", t => t.PersonID)
最初我认为这可能是因为我错过了将实体声明为虚拟的,但事实并非如此。我无法检测到此代码的问题。
像 Vehicles 一样,我还有另一个类 - Documents,其结构和关系与 Person 有点相同。但是对于 Documents,外键是按预期生成的。
【问题讨论】:
标签: c# .net entity-framework entity-framework-migrations ef-fluent-api