![](/img/trans.png)
[英]How to create a table with two foreign keys pointing to the same table using Entity Framework Code First
[英]How to Create two Foreign Keys in one Table pointing to the same Column in some table?
我有一個我要實現的數據庫設計,這很困難,並出現錯誤“有多個ForeignKeyAttributes指向相同的屬性集”
我們有一個機場和一個航班,一個航班有一個外鍵指向要飛行的機場,另一個有外鍵指向該航班要去的機場。
但兩個機場都在同一張表中。 Flight表中有兩個外鍵指向Airport表中的同一列
機場艙
{
public class Airport
{
[Key]
public int Id { get; set; }
[ForeignKey(nameof(Flight.ToAirportId))]
public ICollection<Flight> ComingFlightsId { get; set; }
[ForeignKey(nameof(Flight.FromAirportId))]
public ICollection<Flight> GoingFlightsId { get; set; }
}}
飛行艙
{
public class Flight
{
[Key]
public int Id { get; set; }
[ForeignKey(nameof(FromAirportId))]
public Airport FromAirport { get; set; }
public int FromAirportId { get; set; }
[ForeignKey(nameof(ToAirportId))]
public Airport ToAirport { get; set; }
public int ToAirportId { get; set; }
}}
只需使用這個:
public class Airport
{
public int Id { get; set; }
[InverseProperty("FromAirport")]
public ICollection<Flight> ComingFlights { get; set; }
[InverseProperty("ToAirport")]
public ICollection<Flight> GoingFlights { get; set; }
}
public class Flight
{
public int Id { get; set; }
public int FromAirportId { get; set; }
public int ToAirportId { get; set; }
[ForeignKey(nameof(FromAirportId))]
[InverseProperty("ComingFlights")]
public Airport FromAirport { get; set; }
[ForeignKey(nameof(ToAirportId))]
[InverseProperty("GoingFlights")]
public Airport ToAirport { get; set; }
}
我找到了問題的答案。 逆屬性
將此注釋添加到ICollection
這就是我的機場班級的樣子
{
public class Airport
{
[Key]
public int Id { get; set; }
public string Locatoin { get; set; }
[InverseProperty(nameof(Flight.ToAirportId))]
public ICollection<Flight> ComingFlightsId { get; set; }
[InverseProperty(nameof(Flight.FromAirportId))]
public ICollection<Flight> GoingFlightsId { get; set; }
}}
嘗試在public ICollection<Flight> ComingFlightsId { get; set; }
上使用virtual
修飾符public ICollection<Flight> ComingFlightsId { get; set; }
public ICollection<Flight> ComingFlightsId { get; set; }
public ICollection<Flight> ComingFlightsId { get; set; }
和public ICollection<Flight> GoingFlightsId { get; set; }
public ICollection<Flight> GoingFlightsId { get; set; }
public ICollection<Flight> GoingFlightsId { get; set; }
然后從其中刪除ForeignKey
屬性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.