この問題でデータベースを構築するために、コードファーストアプローチを使用しています。私は次の(部分的な)エンティティを持っています:
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; }
}
いくつかのサンプルデータを使用してSQLServerデータベースをチェックすると、これは期待どおりに機能します。トーナメントは役員と1対多の関係にあります。
私が抱えている問題は、トーナメントでオフィシャルの主キーをヘッドオフィシャルとして保持したいということです。だから私はトーナメントエンティティに追加します:
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が取得されます。私は今、トーナメントとオフィシャルの間に1対多の関係があるだけでなく(トーナメントは多くのオフィシャルを持つことができる)、1対1の関係も持っている(トーナメントは1つの頭しか持てないので)正式)。
この問題を解決するにはどうすればよいですか?