1
我正在使用Code First方法在此問題中構建數據庫。我有以下的(部分)實體:EF實體之間的多重關係
public class Tournament {
public int TournamentID { get; set; }
public String Name { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int? SportID { get; set; }
public virtual Sport Sport { get; set; }
public virtual ICollection<Official> Officials { get; set; }
}
在官方實體我有這樣的:
public class Official {
public int OfficialID { get; set; }
public String Surname { get; set; }
public String FirstName { get; set; }
public int? TournamentID { get; set; }
public virtual Tournament Tournament { get; set; }
public virtual ICollection<Match> Matches { get; set; }
}
使用一些樣本數據和檢查SQL Server數據庫,這個工程,我就指望它。錦標賽與官員有一對多的關係。
我遇到的問題是,我希望比賽持有主管官員的主鍵。所以,我想補充到比賽實體:
public int? OfficialID { get; set; } // foreign key to official table
public virtual Official HeadOfficial { get; set; } // navigation property
如果我這樣做,我得到一個屬性OfficialID和HeadOfficial_OfficialID在我的比賽表,我得到TournamentID,Tournament_TournamentID和Tournament_TournamentID1在我的官員表。我意識到現在我不僅在錦標賽和官方之間有一對多的關係(因爲錦標賽可以有很多官員),但我也有一對一的關係(因爲錦標賽只能有一個頭官方)。
我該如何解決這個問題?
非常感激先生,但我不明白Fluent API的第二部分。實體錦標賽有很多官員(我明白這一點),但隨後錦標賽帶有可選錦標賽和HasForeignKey錦標賽ID?爲什麼錦標賽會有一個外鍵的錦標賽ID? – Mekswoll 2012-03-27 19:28:55
@pEkvo:最後一個'HasForeignKey'爲'Official'實體的屬性表達式,而不是'Tournament',所以'TournamentID'是'Official'中的FK。在lambda參數中基本上't' =「比賽」,「o」=「官方」。 – Slauma 2012-03-27 19:32:36
是的,現在明白了,非常感謝。 – Mekswoll 2012-03-27 19:36:53